2010-02-26 163 views
2

我創建的項目中我需要檢查用戶是否已登錄,我看過的教程確實解釋瞭如何在控制器中進行身份驗證並授予對頁面的訪問權限。但是我希望所有人都可以看到所有頁面,但只有在用戶登錄時才顯示某些選項。CodeIgniter中的身份驗證

像這樣的觀點

if(is_logged_in()): 
//some options here 
else: 
echo "you need to login to have more options"; 
endif; 

所以我應該在哪裏添加此代碼?在助手文件夾中?

編輯:我現在檢查這樣的意見,它的作品,但我不知道這是否是一種最佳做法。該「is_logged_in」是我設置爲true時的憑據進行了驗證

if($this->session->userdata('is_logged_in')) 

編輯:

所以,如果我做一個幫手調用該函數。我可以使用userdata函數檢查嗎?

這是創建會話

$data = array(
    'username' => $this->input->post('username'), 
    //usertype toevoegen hier 
    //email toevoegen 
    //deposit money 
    'is_logged_in' => true 
    ); 
$this->session->set_userdata($data); 

我怎麼能使用該函數的會話數據在我的幫助文件中的函數?

回答

5

如果你想把它作爲一個獨立的功能,你可以從任何地方打電話,那麼你最好把它作爲幫手。在CodeIgniter工具箱中將助手視爲瑞士軍刀的刀片可能會有幫助。

這樣,您可以稍後更改支票,四處移動東西,並仍然撥打電話isloggedin()。但是,這兩種方式都有效。 $this->user->isloggedin()稍微更詳細一些,但是提出了同樣有用的問題分離。

編輯:

如果你想使你的會話數據呼叫的幫手,做到這一點的方式是通過get_instance()

在您的幫助文件的開頭,這樣做:$CI =& get_instance();

function user_logged_in() { 
    $CI =& get_instance(); 
    // Do what you want to do with session. 
    // Simply replace $this->session ... etc. with 
    // $CI->session ... etc. 
... 
} 
+0

謝謝,但我只是檢查視圖,因爲在助手中,我得到了一個警告,我不能在非對象中使用$ this ...所以這是我在視圖中使用的代碼;如果($ this-> session-> userdata('is_logged_in')) – Christophe 2010-02-27 09:39:40

+0

我更新了我的問題,如果你可以幫我解決這個問題。謝謝 – Christophe 2010-02-27 10:17:56

+0

@krike - 我已經更新了。讓我知道這是否有幫助。 – 2010-03-01 18:23:37

0

將它添加到視圖中會很好,這是表示邏輯。

+0

肯定的,但要驗證功能,在哪裏應該把它,所以它是隨處可見? – Christophe 2010-02-26 15:12:59

+0

啊,然後在助手文件夾中,或作爲會話/用戶模型的函數。 – GSto 2010-02-26 16:22:23