2012-08-03 58 views
0

我想給只給授權用戶 所以我寫的構造方法的認證代碼訪問工作 這裏是我的代碼笨重定向不會在_construct方法

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 

} 

但是這種方式我必須在每一個我的方法中寫出它

回答

3

你在做循環重定向。一個假想的堆棧跟蹤:

  1. HTTP請求到/cp/
  2. __construct()
  3. this->this_mustbe_admin() - >重定向到/ CP /登錄
  4. HTTP請求到/cp/login
  5. __construct()
  6. this->this_mustbe_admin() - >GOTO 3.

在執行重定向生成命令之前,您必須檢查您在__construct中嘗試執行的方法。

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

嘗試寫這樣

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

我希望它可以wrks ....或是放棄

redirect('cp/login'); 

,因爲我得到當我用這樣的