2013-12-09 120 views
1

我正在更新我在其他幾個網站上使用的持續登錄過程,以便與codeigniter一起工作,並希望獲得關於處理這種情況的最佳方式的一些意見,或者如果有某些內容可能會忽略。Codeigniter自定義庫或其他解決方案?

我到目前爲止所提出的是擴展控制器類以確定用戶是否已經登錄(使用codeigniters會話庫),然後如果用戶沒有登錄,我期待確定他們是否有一個持久cookie存儲在他們的機器上。如果他們這樣做,我會經歷使用臨時密碼登錄用戶的過程(以及重置臨時密碼併爲安全原因重新創建其持久性cookie)。這很好。

現在我的問題涉及適當的結構和代碼重用性。每當用戶通過點擊登錄按鈕登錄時,也需要上述過程中使用的一些相同功能。目前我的解決方案是創建一個自定義庫,其中將包含與用戶認證/註冊/持久登錄/登錄/註銷相關的所有功能,然後從其功能所在的各個位置調用該庫需要。

雖然這個事情給我留下了一面紅旗,我爲什麼現在要起草這個圖書館,因爲在這個圖書館裏,我需要調用各種模型來操作/獲取數據。我知道這是可能的......但這樣做會被認爲是不好的做法嗎?有沒有可能解決這個場景,我失蹤了?

+0

我的解決方案有幫助嗎? –

+1

非常非常。我接受它作爲我的帖子的答案。 – commanderZiltoid

回答

1

在您自己的自定義庫中調用其他庫和模型非常好。但是,要調用並設置模型/庫,則不能在庫中使用正常的$this(即this-> load-> model('some-model'))。您需要使用$CI。爲此,請在函數的開始處設置變量(從我記得的內容來看,這必須位於函數中 - 而不是構造函數)。然後,您可以像在控制器中那樣調用模型/庫。例如:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 

class Login_auth { 

    function __construct() { 

    } 

    function run() { 

     $CI =& get_instance(); 

     $CI->load->model('some-model'); 
     $CI->load->library('some-library'); 

     .... 

    } 
} 
0

這是不壞的做法都通過庫來操縱和獲取數據。一個庫對codeigniter是一種自由的統治,它意味着即插即用,所以你可以利用它內部的所有codeigniters函數。

相關問題