如何在zend中关闭浏览器时确保会话被销毁

时间:2012-01-20 10:17:39

标签: php linux zend-framework

我有一个在zend框架中开发的应用程序。问题是当浏览器窗口关闭时会话不会被销毁。有什么想法吗?

5 个答案:

答案 0 :(得分:1)

使用onunload事件向服务器发送会破坏会话的ajax请求

请参阅:onunload

答案 1 :(得分:1)

通常,会话在用户代理终止时结束,例如最终用户退出Web浏览器程序时。但是,您的应用程序可以通过使用持久性cookie来提供超出客户端程序生命周期的用户会话的能力。

如果您不使用Zend_Session::rememberMe(),则应在关闭所有浏览器窗口后将其销毁。

答案 2 :(得分:0)

会话变量在到期或您清除浏览器cookie之前不会被销毁。 我们在退出之前关闭浏览器时会看到同样的问题。

答案 3 :(得分:0)

您应该在php.ini或代码中将session.cookie_lifetime设置为0.

The value 0 means "until the browser is closed."

http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime

代码:

session_set_cookie_params (0);

答案 4 :(得分:0)

当我使用Zend时我遇到了同样的问题,记住了我的选项,我没有找到解决方案,但有一个好主意,使用zend db handler存储会话,并通过编写简单查询删除过期的会话来删除旧的cookie(如果它是cron任务,这是一个很好的解决方案)。

有关zend会话数据库处理程序的更多信息,请参阅此处,

http://framework.zend.com/manual/en/zend.session.savehandler.dbtable.html