[英]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版本,请尝试PHPSession和Native Session ]
附注:如果您选择继续使用CI的会话 ,为了提高安全性,您可以将会话存储在数据库中并加密cookie(请参阅会话首选项 )。
听起来你正在使用面包屑方法。
这可能会有所帮助, http://codeigniter.com/forums/viewthread/137949/
回答你的另一个问题,是的,有一个很好的理由使用CodeIgniter会话库。 我使用它是因为我需要在我的数据库中存储用户会话数据(更安全),并且库具有加密cookie的能力,如果启用了全局XSS过滤,那么数据也将被清除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.