【问题标题】:PHP session destroy on closing the browser [duplicate]PHP会话在关闭浏览器时销毁[重复]
【发布时间】:2012-07-29 14:18:32
【问题描述】:

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

我正在为我的客户实现一个聊天脚本。我面临的问题是,如果用户注销,我可以编程将他的聊天状态结束为离线,因为用户登录时状态设置为 1,但我很困惑,如果用户关闭浏览器怎么办无需注销。在这种情况下,由于用户尚未注销,db 中的状态仍为 1。

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

【问题讨论】:

    标签: php


    【解决方案1】:

    假设您正在使用基于 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 事件的时间。这两种方法的组合可能是最有效的。

    【讨论】:

    • 可能这就是我正在寻找的...但我不确定它是否有效...第二个..感谢您的及时帮助!
    【解决方案2】:

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

    您可以对每个请求进行检查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-15
      • 1970-01-01
      • 2015-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多