【发布时间】:2012-10-21 21:02:03
【问题描述】:
最近我用 codeigniter 开发了一个 web 应用程序。我在那里遇到了一个与会话相关的问题。
问题场景:
如果用户 A 登录到应用程序,则用户 ID 在会话中设置。完成任务后,用户 A 关闭了浏览器并离开了计算机。过了一会儿,用户 B 来打开浏览器,看到应用程序处于登录状态。或者当用户 B 写下 url 并按 enter 时,使用上一个会话直接重定向到应用程序而无需任何身份验证。
我对会话使用了以下配置:
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 1800;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = FALSE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
现在我的问题是如何通过在 codeigniter 中关闭浏览器或浏览器选项卡来销毁所有会话?
【问题讨论】:
-
尝试设置
$config['sess_expire_on_close'] = TRUE;。Sessions- 关闭浏览器窗口时是否使会话自动过期。 -
它不起作用。还有其他解决办法吗?
-
您是否将会话存储在数据库中?
-
@AlexRichards 不,我没有将会话存储在数据库中。
-
对于未来的访问者:首先,我尝试了
$config['sess_expiration'] = 0;,但没有成功。然后我尝试了$config['sess_expire_on_close'] = TRUE;,它成功了,但据说这是legacy setting。所以我不能真正依赖它。又试了第一个。这次我重新启动了 Apache,它成功了。
标签: php codeigniter session