2010-02-16 44 views
2

我有一个完美的期望会话,如果我关闭浏览器会话被破坏但是如果我关闭当前选项卡,然后返回到该网站,该会话仍然存在,我该如何使确保会话在关闭选项卡和窗口关闭的情况下被销毁?PHP会话帮助

+1

不是会话被破坏,但浏览器存储的会话ID被删除。 – Gumbo 2010-02-16 09:33:50

+0

你不能正确地销毁它,只有当你的浏览器在浏览器关闭时关闭cookie和历史记录清理,所以你认为这种方式它的工作,但它不是,你可能有某种错误或某事,发布你的代码可以帮助您 – ant 2010-02-16 09:35:15

回答

0

你不能检查用php关闭标签,你应该使用JavaScript onunload事件和ajax调用的组合来请求服务器端会话的destroy方法。

2

这里的问题是浏览器行为。在浏览器关闭之前Cookie通常不会被销毁,而PHP会话则通过会话ID cookie进行维护。

你最好的选择可能是会话超时设置为比默认短(15或30分钟,我相信)

你可以尝试做一些与onunload的匿名暗示,但onunload事件不保证开火,所以你不会确定会议已被破坏。

是否有特殊原因需要会话立即销毁?如果我们知道您确切的问题,我们可能会建议一种解决方法

+0

您需要更加精确:“会话cookie通常不会被破坏,直到......”但不要混淆会话cookie *(仅在一个浏览器会话中有效的cookie)和* cookie会话ID *(存储应用程序会话ID的cookie)。 – Gumbo 2010-02-16 09:57:09

+0

同意,在这种情况下,我指的是包含会话ID的cookie。通常用于默认PHP安装的PHPSESSID。 当然,根据浏览器的设置,实际上并没有保证在浏览器关闭时它也会被销毁。 – 2010-02-16 10:26:31