我正在使用 cakephp 2,最近将我的会话处理程序更改为数据库。一切似乎都工作正常,除非用户在未注销的情况下离开网站,会话保持活动状态。
在我的 core.php 文件中,我配置了数据库会话处理程序,如下所示:
Configure::write('Session', array(
'defaults' => 'database'
));
当用户离开站点而不注销时,如何配置 cakephp 数据库会话以销毁会话?
蒂亚!
我正在使用 cakephp 2,最近将我的会话处理程序更改为数据库。一切似乎都工作正常,除非用户在未注销的情况下离开网站,会话保持活动状态。
在我的 core.php 文件中,我配置了数据库会话处理程序,如下所示:
Configure::write('Session', array(
'defaults' => 'database'
));
当用户离开站点而不注销时,如何配置 cakephp 数据库会话以销毁会话?
蒂亚!
你不能。PHP 按需运行,并且不可能知道用户何时停止浏览该站点。你基本上有2个选择:
会话存储在服务器上,因此如果浏览器关闭或用户转到不同的页面,它没有义务通知服务器此操作。
会话在服务器中存储一定时间,一段时间不活动后,会自动销毁。
查看CakePHP 食谱中的会话信息以获取更多详细信息
有一个可能的解决方案在某些情况下可行,但可能不是一个很好的解决方案:
<body onUnload="ajaxFunctionToDeleteSession();">
some random stuff goes here
</body>
所以ajaxFunctionToDeleteSession
会通过 Ajax 调用一个会删除会话的 url。
我看到的一些问题:
但是,如果您绝对必须在有人离开站点时删除会话,这可能会为您提供解决问题的方法。