关闭浏览器时销毁CakePHP会话

时间:2010-10-28 15:48:16

标签: session cakephp browser

为了Ajax的原因,我需要将Security.level设置在medium上。 但我希望如果用户关闭浏览器,他的会话将会破坏。 我怎么能这样做?

提前致谢!

5 个答案:

答案 0 :(得分:6)

配置/ core.php中

Configure::write('Session', array(
    'defaults' => 'php',
    'cookieTimeout' => 0,   //Lives until the browser is closed.
    'checkAgent'  => false  //To fix a little the Chrome Frame problem
));

答案 1 :(得分:4)

除非您持久保存会话数据(即:将会话数据存储在将来有过期日期的cookie中),否则当用户关闭浏览器时应该销毁该会话。

不幸的是我不熟悉CakePHP框架,因此我无法对其API进行评论。但是,如果要显式结束会话,可以使用session_destroy()在PHP中执行此操作。

希望有所帮助。

答案 2 :(得分:1)

当页面关闭时,您可以使用JS删除会话cookie(请记住:当用户刚刚离开时,也会触发页面关闭 - 可能只是到您的下一页)。

答案 3 :(得分:0)

我猜你可以在页面卸载时触发ajax命令来调用session_destroy()

答案 4 :(得分:0)

CakePHP的

http://book.cakephp.org/view/1317/destroy - 但是,是的,CakePHP设置了一个正确的会话cookie,当浏览器关闭时会被浏览器删除。

你真正关心的是会话劫持 - 所以你真的想要在网站关闭时注销某种东西。你不能这样做 - 我所知道的最好的替代方法是:

  • 短暂的会话超时,“你在吗?” AJAX刷新 - 现在使用Configure::write('Session.timeout', $seconds);可以独立于安全级别控制超时,其中对于中等安全级别,超时秒数乘以100.银行使用此方法。