2017-10-13 72 views
-1

我試圖實現只有登錄用戶才能訪問的基本部分。我overrided是CI_Controller,如下:CodeIgniter不重定向屬性

//file created in application/core/MY_Controller.php 
class Auth_Controller extends CI_Controller { 

    function __construct(){ 
     parent::__construct(); 

     $this->load->library('session'); 

     if ($this->session->userdata('user_logged') !== null){ 
      redirect(base_url() . 'dashboard'); 
      die(); 
     } else { 
      redirect(base_url() . 'auth/login'); 
      die(); 
     } 
    } 

然後我從Auth_Controller延長所有控制器,它僅適用於登錄用戶,如下:

class Dashboard extends Auth_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function index() 
    { 
     $this->load->view('dashboardView'); 
    } 
} 

但登錄susccesful後,不重定向到dashboardView。

任何人都知道它真的發生了什麼?

+0

「不重定向到dashboardView」你究竟是什麼意思?它顯示一個白頁嗎?重定向到另一個頁面? –

+0

如果我使用另一個視圖,我得到同樣的問題。瀏覽器顯示:「頁面沒有正確重定向」 – omixam

+0

只有控制器的第一個字母應該是大寫的文件名和類名,這裏解釋https://www.codeigniter.com/user_guide/general/styleguide.html#文件命名 – user4419336

回答

1

您無限重定向到Dashboard控制器在這部分代碼:

if ($this->session->userdata('user_logged') !== null){ 
    redirect(base_url() . 'dashboard'); 
    die(); 
} 

用這個代替(重定向到登錄表單,如果用戶沒有登錄):

class Auth_controller extends CI_Controller { 

    function __construct(){ 
     parent::__construct(); 

     $this->load->library('session'); 

     // If the user is not logged in 
     if ($this->session->userdata('user_logged') === null){ 
      // Redirect to http://yoursite/auth/login 
      // No need for the base_url function, redirect does it for you 
      redirect('auth/login'); 
      // You don't have to exit/die, redirect() already does that 
     } 
    } 
} 
+0

應該是$ this-> session-> userdata('user_logged')!== null重定向到儀表板,不是嗎? – omixam

+0

我們檢查用戶是否沒有登錄,如果是,我們重定向到儀表板,如果他已經登錄,我們什麼都不做,並繼續執行其餘的控制器,檢查更新的答案。 –

+1

只有控制器的第一個字母應該是大寫的文件名和類名解釋這裏https://www.codeigniter.com/user_guide/general/styleguide.html#file-naming – user4419336

0

意見

  1. 如果我檢查空,WI我會像這樣使用!= null。但在CI 其最好的選項來檢查empty()而不是null
  2. 如果我使用redirect()會使用這樣的redirect('dashboard');

代碼將

if (!empty($this->session->userdata('user_logged'))) { 
    redirect('dashboard'); 
else { 
    redirect('auth/login'); 
} 

確保您的網站將加載沒有index.php的URL。如果沒有搜索到.htaccess到您的網站。