php避免重定向,php 避免登录出现循环重定向

我们在写网站的时候经常会出现这种情况,登录的时候,老是说你的页面中包含循环重定向的内容.

下面我就来说明一下几种常见的情况.

在thinkphp中,如果是后台的话,要求必须登录才能进入到主管理界面.那么我们可以通过这种方法来实现.

在控制器中建立一个 CommonController 通用控制器,然后在里面写一个

public function _initialize(){

//检查是否有session(‘username‘)的内容,如果没有则跳转到登录页面...

没有登录,则跳到登录控制器

$this->error("请登录",U(‘login/login‘));

}

然后后台所有的控制器都要继承这个CommonController ,并且在每个控制器中都写这个函数

public function _initialize(){

parent::_initialize();//必须写上这一句,否则子类将会复写父类的方法,这样父类的验证操作就失效了..

}

这里有没有考虑过这样的问题....

如果我们的登录控制器是LoginController ,也继承这个CommonController的话,问题就来了,当你登录到后台的任何一个页面时,都会提前进行CommonController的_initialize检查登录操作,没有登录,则跳到Login控制器,好了跳到Login控制器之后,又将调用CommonController的_initialize 函数..这就是问题的所在了...

解决方案,要么LoginController不继承CommonController,要么在LoginController中的必须写_initialize()

但是不要执行父类的_initialize()

public function _initialize(){

//做你想做的事情..

//不要使用parent::_initialize();即可

}

好了,如果是前台呢,前台分为几种情况.一种是必须登录,一种是部分模块需要登录.

对于必须登录的这种情况和后台类似了.

下面我们来说说部分模块需要登录的情况.

同样使用后台的方法...

我们可能需要就是当我点击某个模块之后,检查是否登录,没有登录则登录,登录完毕之后跳入我刚才点击的模块.

这里的问题是我们怎么保存我们之前点击的内容的呢..

这里有很多种解决方案,比较好的就是使用ajax方法实现.页面无刷新动态提交,还有我们可以在相应需要登录的模块直接将登录的模板引入进来.

不知大家是否意会到我的思路..

就是我们加入进入到我的博客模块.

public function index(){

if(not_login){

$this->display("将登录的视图引入进来");

exit;

}

else{

///

}

}

当然相对于的我们的登录控制器在登录成功之后就不要跳转了....直接返回登录成功即可..

public function login(){

if(success){

$this->success(‘登录成功!‘);

}

}

好了,搞定.

这是php中的实现,在Laravel框架或者其他的模块中,我们都要考虑这些问题...

我们使用过滤器来解决这个问题,同样的,我们不要在登录的路由上面增加这个过滤器就可以了.

还有一种情况是,如果你在过滤器中这么写

if(检测成功){

//跳转到首页..

}else{

//跳转到登录....

}

这块就有个问题了..如果你统一跳转到首页,好,第一次程序检测到你没有登录,然后跳转到登录界面,当你登录完毕之后,

系统将会跳转到首页...

在首页的控制器中,又将判断是否登录,发现登录,又跳到首页....

这样也是会出现循环重定向的...

解决办法,在过滤器中就不要写成功嘛,直接检测失败不就行了..

要是想成功直接跳转到首页,,其登录那里写,如果登录成功,就统一跳转到首页..

好了,希望你能看懂它.

Persistence makes life valuable .

Best Wishes.

原文:http://blog.csdn.net/lcstrive/article/details/27672075

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Zen Cart是真正的电子商务艺术,一个免费、界面友好,开放源码的网店系统。Zen Cart用于建立专业的网上商店,支持多语言、多货币、搜索引擎优化、批量更新,是最安全的网店系统之一。 Zen Cart 1.5.4 中文版 更新日志:2015-01-09 CHANGE-724 - 修复init_cache_key_check.php定向发生循环,当用户删除/缓存/文件夹CHANGE-423 - 贝宝快速结账 - 回收资金衰竭(10486)与“试”,如果卡被拒绝CHANGE-725 - Authorizenet SIM模块现在哈希x_currency_codeCHANGE-730 - Linkpoint卷曲SSL错误触发PHP的警告:非法串偏移CHANGE-731 - 更新Authorize.net SIM和AIM添加支持澳元,纽元汇率(目前支持美元加元欧元英镑澳元纽元)CHANGE-732 - 更新Authorize.net SIM卡和AIM设置默认商家帐户能够做POS机和Web交易于一体的账户CHANGE-733 - 存储 - 接收组件无法正常激活的区域限制CHANGE-311 - 在管理/ customers.php数据完整性检查CHANGE-709 - 构日志基础设施CHANGE-735 - 修复CSRF的管理员配置文件的行动=删除CHANGE-736 - 修复CSRF在layout_controllers行动= reset_defaultsCHANGE-737 - 替换/admin/orders.php硬编码语言文本修复#136 - 在HTML语法错误admin_activity和CSS注释语法谁在线修复#152 - 找不到网页时不正确EZPage链接删除状态修复#188 - 删除代码注释造成假阳性的安全扫描修复#210 - 修正了撇号的代码在处理文件名修复#215 - 增加了更多的共同目的地curltester脚本修复#221 - 修正了优惠券和运费修复#246 - zc_install升级过程中修正有关密码错误发行 - 82 - (延续)修正奇PHP怪癖,从而引发致命的错误“允许的内存大小---字节用尽”访问SID常量时优化和改进,以不同的数据库查询修正了class.phpbb.php查询修复fmod_round和shopping_cart使用(INT)的数量回移一个PHP 5.4修复程序attr​​ibutes_controllerzc_install - 修复电子邮件验证在zc_install允许新的域名顶级域名修复墨西哥地址与贝宝的亲覆盖替代的gethostname对了shell_exec因为某些主机关闭了shell_exec

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值