我有一种情况,我需要将信息存储到 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;