2012-08-24 188 views
0

嗨,大家好,有谁能让我解决问题。我只是检查浏览器关闭事件,如果用户关闭了浏览器或关闭了同一网站的所有标签页,则会破坏php会话。关闭浏览器清除PHP会话

我使用了一些脚本,但它们正在销毁页面刷新的会话(F5或CTRL + R或浏览器刷新按钮)。

我只需要使用AJAX来检查浏览器的关闭按钮或ALT + F4 ..

总之调用PHP函数,当用户完全关闭浏览器或关闭所有标签。

+0

[您尝试过什么?](http://whathaveyoutried.com) – 2012-08-25 01:50:04

+0

无法从网站中检测到浏览器关闭事件。 –

+0

可能重复的[销毁窗口关闭会话?](http://stackoverflow.com/questions/959655/destroy-session-on-window-close) – mplungjan

回答

4

一旦用户关闭浏览器,会话应自动丢弃。除非有某种“记住我”的功能。

+0

感谢评论,我用记住我的功能,我需要紧密地检查浏览器。 –

+1

如果您使用“记住我”功能,为什么在关闭浏览器后尝试终止登录?这不会使Remember Me功能无用吗? –

0

当浏览器关闭时会话会自动销毁,您想要做什么?

+0

感谢评论,但我需要强力检查浏览器。 –

+0

这似乎不是一个好的解决方案,你能否更具体地告诉我们你想要做什么? – Intrepidd

1

有没有办法保证你的服务器可以知道用户已经关闭了他们的浏览器 - 不要试图实现这一点。

当用户关闭浏览器时,会话将自动丢失,因为浏览器不会保留用于将自身与生成的PHP会话关联的cookie。但是,这并不是必然的保证。你可能需要问一个不同的问题。

+0

感谢您的宝贵意见 –

1

PHP会议的工作是这样:

它存储阵列的每个实例静态变量类型,并通过存储的哈希值作为被叫PHPSESSID一个cookie标识会话变量。

那个Cookie的生命期是在浏览器打开的时候,在浏览器关闭的时候Cookie被丢弃了。

某些浏览器可能存储该Cookie永久,但会话在服务器端有超时。

你可以在Browser Close上运行一个函数的情况是不可能的,因为Browser Kill的所有在运行JavaScript时都退出。

+0

会话cookie的_default_生存期为0,即标记为“客户端会话关闭时删除”。但是_can_可以更改,请参阅http://docs.php.net/session.configuration#ini.session.cookie-lifetime。而且......还有其他的方式来传输会话ID,但他们有其他(和更大的)问题。 – VolkerK