2014-10-05 80 views
0

我真的很想了解兩個函數的最佳用法。Codeigniter重定向/加載視圖

控制器:(多的處理之後,可讓直接跳到創建會話)

$isLoggedin = array('user_name' => $row['username'] , 'user_type' => 'user' , 'is_loggedin' => TRUE); 
$this->session->set_user($isLoggedin); 
redirect('controller/index'); 
在控制器

public function __construct() 
{ 
parent::__construct(); 
    //should i check for the session here? 
} 

function index(){ 
// or should i check here? 
} 

在登錄控制器,在創建會話之後,我通過它到主控制器,在訪問主頁之前,我想驗證是否表示創建的會話= session['is_loggedin'] == TRUE =登錄。

我的困惑是,因爲每次調用控制器時,構造函數都會正確加載。如果我錯了,請糾正我。所以在登錄控制器的重定向,我不應該調用索引?

我應該只是在那裏調用控制器,然後讓構造函數處理,然後在構造函數中,像這樣。

public function __construct(){ 
parent::__construct(); 
if($session['is_loggedin'] == TRUE) 
$this->load->view('homepage'); 
else 
redirect('Login'); 
} 

所以我想我不會再需要索引了嗎?以這種方式調用控制器可以嗎?在重定向中,我也必須將$ session從控制器傳遞給控制器​​嗎?

+0

在codeigniter中,構造函數的使用主要是加載可以在類的其他函數中使用的通用庫和輔助函數。當沒有提到特定功能時,索引函數作爲默認函數工作。 – user1906399 2014-10-05 07:09:50

回答

0

在加載任何庫或助手之前,您最好檢查用戶是否在構造函數中有登錄會話。但要確保會話和數據庫已加載,以檢查用戶登錄狀態。這可以幫助您防止任何其他未經授權的訪問您網站的其他功能和資源,導致您可能直接在URL中輸入其他一些功能的名稱!

0

使用構造函數來加載該特定類中其他函數所需的通用庫和幫助程序。 當沒有提及其他函數時,索引函數作爲默認函數工作。 例如,你可以像這樣

public function index(){ 
    $this->login(); 
} 

public function login(){ 
    login code 

} 

所以這樣your base url/class name/base url/class name/ login既會工作。 如果您在application/config/autoload.php文件自動加載會話庫,你不需要擔心會話,只需要在config.php文件

設置加密密鑰如果您不希望自動加載的會話,那麼你需要加載會話手動在需要維護會話的每個類的構造函數上。

+0

我已經在我的配置中加載了我需要的每個庫和幫助程序。那麼這是否意味着構造函數現在已經過時了?無論如何,無論如何,重定向和加載視圖怎麼樣。我想最大限度地利用我的用法。我想開發具有體面代碼的網站。你能向我解釋在使用上的差異嗎? – 2014-10-05 07:34:14

+0

自動加載就像是一個超級普通任務的持有者,構造函數就像一個特定類的普通任務持有者。除非您需要所有控制器的所有功能中的每個庫和幫助程序,否則不應自動加載所有內容。 – user1906399 2014-10-05 07:46:42

+0

如果用戶已經登錄,您是否嘗試不顯示登錄頁面?如果用戶嘗試通過url訪問登錄頁面,則需要重定向回主頁? – user1906399 2014-10-05 07:50:13