我正在探索一个潜在的内部内容交付系统,我们必须跟踪学生的任务时间。只要学生与页面交互,就没有问题。如果学生外出吃午饭时页面保持打开状态,则会话应超时,并且在超时后他们将不会获得在线时间的学分。
我已经认为我可以轻松捕获诸如离开页面并使用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 分钟,则排除。