在我的 php 应用程序中,我使用 $_SESSION 来跟踪用户是否登录。如果用户在我的网站上离开任何页面 http://mysite.com 并前往 http://someotherwebsite.com, ,我想自动注销它们,这样如果它们返回到任何页面 http://mysite.com, ,他们需要重新登录。

是否有捷径可寻?

有帮助吗?

解决方案

您无法明确判断用户何时 树叶 对于您的网站,最好的选择是对会话实施超时。

正如大多数答案所说,你 可以 检查 JavaScript 事件 onbeforeunload 但用户可以通过禁用 JavaScript 来绕过这个问题,或者, BalusC曾指出, ,使用不支持它的网络浏览器,例如 Opera。

因此,我坚信对会话实施超时是强制注销的最佳方法。

其他提示

除了把超时上你的课程-不是真的。只有这样,想到的是 onbeforeunload JavaScript事件,火灾当户离开前页,但是,这事件并不知道 哪里 用户是怎么回事。你可以但是,如果你 真的 要做到这一点, 也许 建立一个基于以下哈克解决方法(未经测试):

  • 设置一个 onbeforeunload 事件发送阿贾克斯打电话给你的服务器。(如何成功地做到这一点-这样的呼吁获得通过之前,页面被封闭-是一个问题的其自己的搜索"onbeforeunload阿贾克斯"上所应该产生一些结果。

  • 阿贾克斯呼叫会开始倒计时说,这个用户的会议是关于死在十五秒钟。

  • 如果用户是离开你的网站,倒计时适用。

  • 如果用户要一个不同的网站上的网页,清除任何"死"倒计时的时候提供服务的下一页。

这是可能被摇摇欲坠,因为它可能发生,Ajax请求 开始 倒计时到达的服务器之后,下一页已经 消除 这倒计时。但如果你真的需要这样做,这可能是一个方向。作为用户提JS仅启用,当然。

第二个想法如何实现这将是把上的会话(如90秒),极低的超时,并把一个iframe你服务好每一个页面上。该iframe会然后对页面每60秒一个电话。

这将工作没有JavaScript,但可以在老版本的Internet Explorer创建恼人的点击声音(我不知道是否在6或7已停止?)

您不能(但你的会议会后自动超时一段时间,所以你可以设置超时时间短)。

据我了解PHP(这是没有太大的)将您的应用程序不会知道他们离开了网站?如果你去someotherwebsite.com,你的代码是不会再次调用,直到他们回来了。

不幸的是不是真的, 这是使用Web应用程序的一个大问题。您的应用程序无法知道浏览器已经转移到不同的网站的方式。

由于ChristohpeD提到您可以设置会话超时。 请记住,当服务器临危后或某种形式的javascript平你的网站将只刷新时间。

希望帮助

scroll top