簡體   English   中英

我應該將哪個會話庫與CodeIgniter一起使用?

[英]Which session library should I use with CodeIgniter?

我最近開始使用CI和它的CI會話,但我注意到有一件事特別是使用CI會話比使用基本PHP會話更耗時: 數組

我有一系列數據持續存在,無論登錄/注銷名為$_SESSION['stats'] ,然后我以下列形式將數據存儲在該數組中:

$_SESSION['stats']['last_page'] = $_SERVER['REQUEST_URI'];

當用戶注銷時,它會將stats數組保存在變量中,清除會話,然后將其加載回新會話。

問題是,為了編輯last_page鍵,而不是上面的一行,我必須使用這段代碼:

$stats = $this->CI->session->userdata('stats');
$stats['last_page'] = $_SERVER["REQUEST_URI"];
$this->CI->session->set_userdata('stats', $stats);

這是我在CI會話中發現的一些煩惱之一,這使我對它作為我的會話處理程序感到不滿。 所以我的問題是: 我應該在CodeIgniter中使用哪個會話系統? ...是否有使用CI會話的原因? 您建議使用CI庫嗎? 為什么不使用PHP會話?

謝謝,

Lemiant

CI會話提供了一些額外的功能; 例如,每隔給定的時間(安全性),IP地址跟蹤和flashdata (在讀取一次后清除的會話數據)自動重新生成會話ID。

CI的會話機制將所有數據存儲在cookie中。 PHP的本機會話機制存儲在服務器端。 每個都有它的優點/缺點。 Cookie只能容納4KB的數據,因此如果您在會話中存儲大量數據,PHP本機會話可能會更好。

如果您決定要使用本機PHP會話,請使用: Session Hybrid (CI 1.7.2)

會話混合使用本機PHP會話,可以將會話數據存儲在默認CI數據庫中,是CI會話類的直接替代,只需要重寫一個文件。

[*如果 1.7.0 之前使用CI版本,請嘗試PHPSessionNative Session ]

附注:如果您選擇繼續使用CI的會話 ,為了提高安全性,您可以將會話存儲在數據庫中並加密cookie(請參閱會話首選項 )。

聽起來你正在使用面包屑方法。

這可能會有所幫助, http://codeigniter.com/forums/viewthread/137949/

回答你的另一個問題,是的,有一個很好的理由使用CodeIgniter會話庫。 我使用它是因為我需要在我的數據庫中存儲用戶會話數據(更安全),並且庫具有加密cookie的能力,如果啟用了全局XSS過濾,那么數據也將被清除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM