codeigniter重定向在_construct方法中不起作用

时间:2012-08-03 16:45:09

标签: php codeigniter

我想只授予授权用户访问权限 所以我在构造方法中编写了身份验证代码 这是我的代码

class cp extends CI_Controller {

    public function __construct(){
        parent::__construct();
        $this->this_mustbe_admin();
    }

    public function this_mustbe_admin()
    {

        $this->load->model('m_cp');
        $md = $this->m_cp->is_admin();
        if($md)
         return $md;
        else
        {
            redirect(base_url().'cp/login/');
        }

    }

    function login()
    {   
             $this->load->view('admin/login');

    }

但我收到错误

The page isn't redirecting properly

如果我从构造中删除this_mustbe_admin方法并将其放在其他控制器上它可以正常工作

function do_stuff(){

   $this->this_mustbe_admin();
   // do stuff 

}

但这样我必须在我的每一个方法中写出

2 个答案:

答案 0 :(得分:3)

您正在进行循环重定向。一个虚构的堆栈跟踪:

  1. /cp/
  2. 的http请求
  3. __construct()
  4. this->this_mustbe_admin() - >重定向到/ cp / login
  5. /cp/login
  6. 的http请求
  7. __construct()
  8. this->this_mustbe_admin() - > GOTO 3。
  9. 在执行重定向生成命令之前,您必须检查尝试在__construct中执行的方法。

    if (!$this->router->method != 'login') {
        $this->this_mustbe_admin();
    }
    

答案 1 :(得分:0)

尝试这样写

redirect('base_url(cp/login)');

我希望可能是wrks ......或者只是简单地给予

redirect('cp/login');

因为当我像这样使用时我得到了