我应该将哪个会话库与CodeIgniter一起使用?

lem*_*ant 5 php arrays session 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);
Run Code Online (Sandbox Code Playgroud)

这是我在CI会话中发现的一些烦恼之一,这使我对它作为我的会话处理程序感到不满.所以我的问题是:我应该在CodeIgniter中使用哪个会话系统?...是否有使用CI会话的原因?您建议使用CI库吗?为什么不使用PHP会话?

谢谢,

Lemiant

Mit*_*nna 8

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(请参阅会话首选项).