繁体   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