【发布时间】:2013-06-06 16:39:38
【问题描述】:
我有一种情况,我需要将信息存储到 codeigniters 会话中 -> 能够关闭浏览器窗口 -> 然后打开浏览器窗口并让它恢复我存储在会话中的所有项目。我知道 codeigniter 实际上并没有使用会话,而是使用 cookie,所以这应该很容易......但事实并非如此。
在 FF / Safari / Chrome 中这工作正常,但在 IE 9 中,当我关闭然后重新打开窗口时,它会重新生成会话 ID 并且不会拉回数据。
例如这个简单的代码:
$this->CI->session->set_userdata('username','My Username');
echo $this->CI->session->userdata('username');
第一次运行时按预期输出。然后我注释掉第 1 行并刷新屏幕,会话数据再次正确显示。
现在我关闭浏览器窗口并将其打开到同一页面,再次注释掉第 1 行。它找不到会话数据,会话 id 现在已更改。
我在 codeigiter 中将会话保存到数据库中,我的会话配置如下所示:
$config['sess_cookie_name'] = 'bcsession';
$config['sess_expiration'] = 0;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update'] = 300;
【问题讨论】:
-
当然codeigniter“实际上”使用会话。它可以将会话数据存储在 cookie 或数据库中。在数据库的情况下,您仍然会有一个包含会话 ID 的 cookie,因此它可以将其与数据库匹配。
标签: session codeigniter-2