您使用笨不要緊,因爲你可以與你使用任何平臺上很容易地設置cookie信息的事實。 CodeIgniter只是提供cookie的包裝函數,以便於處理。如果你知道如何使用CI的cookie助手,那麼你應該沒有問題做這個工作。
最可靠的解決方案是使用一個包含該用戶唯一標識的cookie。該唯一標識符與包含用戶設置的數據庫記錄匹配。通過只保存cookie中的唯一ID,可以避免在設置更改時必須讀取和寫入cookie。如果您的網站需要自己的設置添加新功能,則無需觸摸該Cookie,只需將新設置值添加到數據庫即可。此外,您不希望在Cookie中公開設置信息,這可能會允許某人編輯Cookie的內容以嘗試進行SQL注入或其他攻擊。
您可以爲您的網站創建多個Cookie,因此我會爲唯一ID創建新的Cookie以與用戶設置相匹配。當用戶訪問您的站點時,加載CI cookie助手,然後使用CI的get_cookie('unique_cookie')助手來查找cookie。 cookie名稱'unique_cookie'是您用作包含用戶唯一標識的cookie的名稱。
如果get_cookie()返回false,那麼用戶沒有cookie,所以他可能是第一次訪問或者他刪除了cookie。你必須使用set_cookie($ cookie_array)創建一個新的cookie。 set_cookie()方法將關聯數組作爲參數。該數組包含cookie的值,其中之一是'name',您將設置爲'unique_cookie','value'將是唯一的ID(使用CI字符串幫助器的random_string()方法創建唯一的ID) 。在設置cookie時,您還需要使用包含默認設置值的唯一ID創建數據庫記錄。
當用戶在您的網站上時,創建一個會話對象(使用CI的會話庫)來保存唯一ID,以便當用戶在會話期間更改設置時,您可以將會話的唯一ID值與db記錄因此您可以更新該記錄而無需繼續觸摸cookie。對於可能需要獲取或設置設置的任何控制器操作,可以使用會話工具來獲取唯一標識。當用戶首次進入您的網站並且尚未創建會話對象時,您只需觸摸cookie即可。