1

我正在尝试创建一个网站,只要您留在该网站上,您就可以通过 php 中的会话保持登录状态,但如果您离开该网站,您将被注销。例如,当您从 mysite.com/index.php 移动到 mysite.com/otherpage.php 时,您将保持登录状态,但在您移动到 ​​othersite.com 时将被注销。这可能吗?

到目前为止,我已经尝试使用 ajax 和 jquery 在页面离开时结束会话,但这也会在页面刷新时结束会话。

$(window).unload(function(){
        $.ajax({
            type: 'POST',
            url: 'logout.php',
            async:false,
            data: {key_leave:"289583002"}
        });
    });
4

2 回答 2

2

无法检测用户是否离开了您的网站(想象一下用户刚刚断开互联网连接,但浏览器仍处于打开状态,或通过 KILL 关闭浏览器的场景),所以基本上您无法做您想做的事。

无论如何,这里有一些线索:

  1. 为什么你需要它?目标是什么?尝试重新思考您的架构。
  2. 您可以将 session.cookie_lifetime 配置为 0,这意味着“直到浏览器关闭”
  3. 您可以在每个页面上添加一些javascript“ping”,例如每10秒调用一次您的脚本,或者在互联网关闭时停止调用,用户转到另一个站点并且其他选项卡中没有页面,那么您将需要单独的cron将销毁上次没有 ping 的用户的会话的作业
于 2013-10-09T19:03:56.023 回答
0

一个简单的解决方案是

a) 在服务器端 - 如果存在会话,则从数据库(在服务器上)检索用户最后一次访问页面的时间。如果太久以前让他们再次登录。否则交付页面并取消数据库更新 b) 为了获得更好的用户体验,请使用 Javascript 更新页面 (setTimeout)。

如果 (b) 不起作用(即无论出于何种原因),那么至少服务器与个人数据一起受到保护

于 2013-10-09T19:11:57.687 回答