php - 我应该将哪个 session 库与 CodeIgniter 一起使用?

标签 php arrays session codeigniter

我最近开始使用 CI 和 CI session ,但我注意到有一点特别是,使用 CI session 比使用基本 PHP session 更耗时:数组

我有一个名为 $_SESSION['stats'] 的数据数组,无论登录/注销如何,它都会持续存在,然后我将数据以以下形式存储在该数组中:

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

当用户注销时,它将统计数组保存在一个变量中,清除 session ,然后将其加载回新 session 。

问题是为了编辑 last_page 键,而不是上面的一行,我必须使用以下代码:

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

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

谢谢,

勒芒

最佳答案

CI session 提供了一些额外的功能;例如每隔给定的时间自动重新生成 session ID(出于安全考虑)、IP 地址跟踪和flashdata( session 数据读取一次后清除)。

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

如果您决定要使用 native PHP session ,请使用: Session Hybrid (CI 1.7.2)

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

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

旁注:如果您选择保留 CI 的 session ,为了额外的安全性,您可以将 session 存储在数据库中并加密 cookie(参见 Session Preferences)。

关于php - 我应该将哪个 session 库与 CodeIgniter 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3663583/

相关文章:

PHP - 字符串的所有组合大小写字符

javascript - 将数据数组发送到mqtt节点js

java - 了解 hibernate 中的 session.get 与 session.load 方法

asp.net - gmail 和 orkut 登录背后的功能是什么?

c# - 使用 C Sharp 或 PHP 执行 Google 文本搜索?

php - MySQL select * with distinct id

ruby - 在 Ruby 中测试数组包含的最快方法

php - 为什么在 Session_Start() 之前不能输出任何内容?

php - 我如何用 epoch 和 mysql 每小时计数?

c - 为什么我们可以在数组中插入比数组所能容纳的更多的元素