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