关闭浏览器时会破坏PHP会话

时间:2012-07-31 18:17:48

标签: php

  

可能重复:
  Destroy or unset session when user close the browser without clicking on logout

我正在为我的客户实施聊天脚本。我面临的问题是,如果用户退出,我可以编程将其聊天状态结束为离线,因为当用户登录时状态设置为1,但我很困惑,如果用户关闭浏览器怎么办?没有退出。在这种情况下,由于用户尚未注销,因此数据库中的状态仍为1。

希望你理解这个问题。请帮忙。

2 个答案:

答案 0 :(得分:2)

假设您正在使用基于cookie的会话,请非常积极地设置超时。

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

您还可以通过JavaScript挂钩浏览器的卸载事件,并向您的服务器触发一个快速的AJAX请求,从而破坏会话。

http://eureka.ykyuen.info/2011/02/22/jquery-javascript-capture-the-browser-or-tab-closed-event/

我不会依赖这种客户端实现 - 如果浏览器崩溃,或者用户强行关闭它,可能不会触发事件。考虑到用户,浏览器本身也可以限制完成onunload事件的时间。这两种方法的组合可能是最有效的。

答案 1 :(得分:2)

当会话cookie过期或在一段时间不活动后,将用户设置为在数据库中脱机。

您可以在每次请求时查看此内容。

相关问题