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

时间:2010-09-07 23:54:47

标签: php arrays session codeigniter

我最近开始使用CI和CI会话,但我注意到,对于CI会话而言,与基本PHP会话相比,特别要做的事情要花费更多时间: Arrays

我有一个数据数组,无论登录/注销名为$_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

2 个答案:

答案 0 :(得分:8)

CI会话提供了一些额外的功能; ,例如每隔一段时间(安全性)自动重新生成会话ID,IP地址跟踪和 flashdata (会话数据)在阅读一次之后它就被清除了。

CI的会话机制将所有数据存储在cookie中。 PHP的本机会话机制存储在服务器端。每个都有它的优点/缺点。 Cookie只能容纳4KB的数据,因此如果您在会话中存储大量数据,PHP原生会话可能会更好。

如果您决定要使用本机PHP会话,请使用: Session Hybrid(CI 1.7.2)

Session Hybrid使用本机PHP会话,可以将会话数据存储在默认CI数据库中,是CI会话类的直接替代,只需要重写一个文件。

[*如果在 1.7.0之前使用CI版,请尝试PHPSessionNative Session]

旁注:如果您选择继续使用CI会话,为了提高安全性,您可以将会话存储在数据库中并加密Cookie(请参阅Session Preferences)。

答案 1 :(得分:0)

听起来你正在使用面包屑方法。

这可能有所帮助,http://codeigniter.com/forums/viewthread/137949/

回答你的另一个问题,是的,有一个很好的理由使用CodeIgniter会话库。我使用它是因为我需要在我的数据库中存储用户会话数据(更安全),并且该库具有加密cookie的能力,如果启用了全局XSS过滤,那么数据也将被清除。