我最近开始使用 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 版本,请尝试 PHPSession和 Native Session ]
旁注:如果您选择保留 CI 的 session ,为了额外的安全性,您可以将 session 存储在数据库中并加密 cookie(参见 Session Preferences)。
关于php - 我应该将哪个 session 库与 CodeIgniter 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3663583/