2011-06-21 82 views
1

我建立了基於CI網站一個簡單的登錄系統和我我不能確定在哪裏把我的功能:代碼點火器應用:IS-登錄功能:在那裏把

is_logged_in() 
    // check if session logged in stuff exists 
    // if not check for cookie and reset from that 
    // return true or false 

首先,我需要從一些公共頁面調用它,以便他們可以顯示'您已登錄爲[blah]。繼續到會員區'。

把它放在我的登錄模型中,從我的控制器調用它然後將結果(logged_in:true/false)傳遞給我的視圖是否合理?

回答

1

大部分。

這可能是一個模型或它可能是一個圖書館問題。問題在於你是如何存儲他們是否已登錄。個人而言,我通常將它放在一個調用特定模型的庫中,起初看起來不那麼優雅,但實際上,我不希望我的模型知道我的任何事情$_SESSION或我的$this->session,其中之一如果我想有一個良好的身份驗證系統將是必要的。

至於如何與觀點交流,有幾個方法:

  1. 它作爲一個特殊的變量傳遞給視圖:
    獎金:這是最明顯的。
    損害:您需要將其放入每一個呼叫才能查看。這意味着要麼覆蓋加載器,要麼更新所有控件(可能很粗糙)。
  2. 它被定義爲一個常數:
    獎金:到目前爲止,如果您在視圖中有邏輯,最容易。
    損害:常量很少去,他們很難調試,而且它不是一個非常好的CodeIgniter方法。
  3. 有一個輔助功能(字面上是一個「幫手」功能)
    獎金:通用訪問值,這是相對容易調試。
    損害:需要助手瞭解庫和/或模型(這實際上是內置於form_helper的真實情況,但它仍然打開了蠕蟲的諺語),它可能是單功能幫助器文件。
  4. 有條件地包含控制器的視圖
    紅利:它從您的視圖中刪除所有邏輯。
    損害:您仍然需要讓您的控制器知道邏輯。

個人而言,我最有可能使用#的3 & 4,但各有其優點。

+0

我去創建一個具有登錄,is_logged_in,註銷方法的auth庫。它會處理會話,但會爲任何數據庫交互調用我的登錄模型。 – gio