如何在浏览器关闭/崩溃时写入数据库用户的注销时间戳

时间:2012-06-16 09:18:15

标签: php

我的数据库上有一个名为'Log'的表。此Log表包含ID,Username,LoginTime和LogoutTime。就是这样。

INSERT到ID,Username和LoginTime列真的很容易......

但是在处理LogoutTime时,我认为会有2个条件:

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

  2. 用户只需点击其浏览器的关闭按钮>>即可离开我的网站。这会引起一个问题。在这种情况下,如何写入LogoutTime列?

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

3 个答案:

答案 0 :(得分:3)

完成此任务的最常见解决方案是使用超时。因此,您定期运行一个cron,检查是否有用户不再处于活动状态。例如,过去半小时内没有请求。然后在那一刻添加注销时间。

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

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

答案 1 :(得分:1)

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

< body onbeforeunload="alert('Closed!');">

答案 2 :(得分: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%满足你的要求的功能。

使用javascript你可以尝试使用onbeforeunload,这是一个很好的做法,而不是使用javascript,而不是因为开销原因而在PHP中。