码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2014-06-01 10:47:54      阅读:343      评论:0      收藏:0      [点我收藏+]

标签: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.



php 避免登录出现循环重定向,布布扣,bubuko.com

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

标签:php   页面循环重定向   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!