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