可能重复:
Destroy or unset session when user close the browser without clicking on logout
我正在为我的客户实施聊天脚本。我面临的问题是,如果用户退出,我可以编程将其聊天状态结束为离线,因为当用户登录时状态设置为1,但我很困惑,如果用户关闭浏览器怎么办?没有退出。在这种情况下,由于用户尚未注销,因此数据库中的状态仍为1。
希望你理解这个问题。请帮忙。
答案 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过期或在一段时间不活动后,将用户设置为在数据库中脱机。
您可以在每次请求时查看此内容。