1

我的数据库上有一个名为“日志”的表。此日志表包含 ID、用户名、LoginTime 和 LogoutTime。就这样。

插入 ID、用户名和登录时间列真的很容易......

但是在处理 LogoutTime 时,我想会有两个条件:

  1. 用户单击注销按钮>>问题已解决,我可以轻松地将 INSERT 脚本放在我的 logout.php 上以处理 LogoutTime 列。

  2. 用户只需单击浏览器的关闭按钮即可逃离我的网站>>这将导致问题。在这种情况下,如何写入 LogoutTime 列?

它只能由PHP处理吗?我的意思是,不必使用 jQuery...谢谢。

4

3 回答 3

3

完成此操作的最常见解决方案是使用超时。所以你定期运行一个 cron 来检查是否有不再活跃的用户。例如,在最后半小时内可能没有请求完成。然后添加当时的注销时间。

因此,每个操作都会使用上次请求时间更新用户会话,以便您知道他们何时超时。

控制 100% 关闭浏览器是不可能的。例如,考虑一下客户端计算机的电源故障,您肯定不会得到任何回报。

于 2012-06-16T09:25:21.640 回答
1

在 IE 中你可以尝试这样的事情:

< body onbeforeunload="alert('Closed!');">
于 2012-06-16T09:24:41.017 回答
1

您可以实现类似的东西,时间可以根据您的需要而有所不同

if (isset($_SESSION['browser_last_activity']) && (time() - $_SESSION['browser_last_activity'] > 1800)) {
    // request 30 minates ago
    // set the logout time here
}
$_SESSION['browser_last_activity'] = time(); // update last activity time

但是你不可能用 php 实现 100% 满足你要求的功能。

并且您可以尝试使用onbeforeunloadjavascript,由于开销原因,与使用 javascript 而不是使用 php 相比,这是一种很好的做法。

于 2012-06-16T09:31:15.367 回答