Session 关闭浏览器时销毁CakePHP会话
出于Ajax原因,我需要将Security.level设置为中等。 但我希望,如果用户关闭浏览器,他的会话将被破坏。 我该怎么做Session 关闭浏览器时销毁CakePHP会话,session,cakephp,browser,Session,Cakephp,Browser,出于Ajax原因,我需要将Security.level设置为中等。 但我希望,如果用户关闭浏览器,他的会话将被破坏。 我该怎么做 提前谢谢 除非您要持久化会话数据(即:将会话数据存储在将来到期的cookie中),否则当用户关闭浏览器时,会话应该被销毁 不幸的是,我不熟悉CakePHP框架,因此无法对其API发表评论。但是,如果要显式结束会话,可以在PHP中使用session\u destroy() 希望能有所帮助。我想你可以在页面卸载时启动ajax命令来调用session_destroy()你可
提前谢谢 除非您要持久化会话数据(即:将会话数据存储在将来到期的cookie中),否则当用户关闭浏览器时,会话应该被销毁 不幸的是,我不熟悉CakePHP框架,因此无法对其API发表评论。但是,如果要显式结束会话,可以在PHP中使用
session\u destroy()
希望能有所帮助。我想你可以在页面卸载时启动ajax命令来调用session_destroy()你可以在页面关闭时用JS删除会话cookie(记住:当用户刚刚离开时也会触发页面关闭,可能只是导航到你的下一页)。对于CakePHP,是的,CakePHP确实设置了一个适当的会话cookie,浏览器关闭时会删除该cookie 你真正关心的可能是会话劫持,所以你真的想在网站关闭时注销。你不能这样做-我所知道的最好的替代方法是:
- 带有“你在吗?”AJAX刷新的短会话超时-现在可以使用
Configure::write('session.timeout',$seconds)独立于安全级别控制超时代码>,其中对于中等安全级别,超时秒数乘以100。银行使用这种方法
Configure::write('Session', array(
'defaults' => 'php',
'cookieTimeout' => 0, //Lives until the browser is closed.
'checkAgent' => false //To fix a little the Chrome Frame problem
));
你没有说你是在使用php蛋糕还是数据库会话。如果浏览器崩溃怎么办?我会用另一种方法:每隔几秒钟用ajax发布一个url。如果这种情况不再发生,用户就不再“在网站上”了。这没关系,但如果你告诉他如何销毁它,而不是一开始就暂时销毁它,那就更好了。为什么这只是“可以”呢?我认为这就是解决方案,因为它只会破坏auth cookie,从而破坏会话。手动销毁它需要额外的ajax调用,该调用依赖于JS,而不是每个用户都打开了JS。所以这是不可靠的。Configure::write('Session',array('defaults'=>'php','timeout'=>1440,//会话将在30分钟不活动后超时'cookieTimeout'=>1440,//会话cookie将最多生存24小时,这不会影响会话超时'checkAgent'=>false,//'autoRegenerate'=>false,//导致会话中断在到期时(每次页面加载时重置));//同时注释这一行,它可以完美地“自动重新生成”