让用户登录过期的最佳方式


The best way to have a user log in in expire?

我正在探索一个潜在的内部内容交付系统,我们必须跟踪学生的任务时间。只要学生与页面交互,就没有问题。如果学生外出吃午饭时页面保持打开状态,则会话应超时,并且在超时后他们将不会获得在线时间的学分。

我已经认为我可以轻松捕获诸如离开页面并使用PHP将该事实记录到MySQL中学生的记录之类的事件,但是让学生超时的最佳方法是什么?JavaScript?我环顾四周,还没有找到一个好的解释。

感谢您的任何帮助!

----------编辑--------------

在Floris建议查看有关空闲的特定帖子之后,大多数人建议使用JQuery解决方案,但有一张海报有一个简单的解决方案,没有JQuery。这段代码看起来会起作用吗?对我来说看起来不错:

var inactivityTime = function () {
    var t;
    window.onload = resetTimer;
    document.onmousemove = resetTimer;
    document.onkeypress = resetTimer;
    function logout() {
        alert("You are now logged out.")
        //location.href = 'logout.php'
    }
    function resetTimer() {
        clearTimeout(t);
        t = setTimeout(logout, 3000)
        // 1000 milisec = 1 sec
    }
};

使用 JavaScript 检测用户何时处于空闲状态。当用户处于空闲状态时,会触发 AJAX 调用,该调用会泄露任何 cookie 或会话数据。

如果您让浏览器完成工作,学生可以轻松伪造它。相反,每当用户执行操作(例如转到其他页面)时,我都会将其转过来并记录。花费的时间是操作与下一个操作之间的时间总和(增量时间),但如果增量时间大于 15 分钟,则排除。