参考:https://www.laruence.com/2012/01/10/2469.html
方法一、PHP后端Session
- 登录时记录过期时间到Session中
- 在入口文件中判断是否过期,过期则退出,否则更新过期时间
// 入口文件判断
if (isset($_SESSION['expiretime'])) {
if ($_SESSION['expiretime'] < time()) {
unset($_SESSION['expiretime']);
header('Location: index.php?m=user&f=logout'); // 登出
exit(0);
} else {
$_SESSION['expiretime'] = time() + 3600;// 更新时间戳
}
}
方法二、JS前端定时器
// 判断当前页面是否是登录页面,登录页面不需超时机制
if (window.location.search.indexOf('m=user&f=login') === -1) {
var timeOut = {
lastTime: new Date().getTime(),// 最后操作时间
currentTime: new Date().getTime(),// 当前时间
expire: 12*60*60*1000,// 超时时间,12小时
interval: null // 定时器
}
// 鼠标移动事件
$(document).mousemove(function(){
timeOut.lastTime = new Date().getTime();
});
// 定时器 间隔1秒检测是否长时间未操作页面
timeOut.interval = window.setInterval(function(){
timeOut.currentTime = new Date().getTime();
console.log("超时:"+(timeOut.currentTime - timeOut.lastTime));
if (timeOut.currentTime - timeOut.lastTime > timeOut.expire) { //判断是否超时
alert('登录超时,请重新登录');
window.location.href = "index.php?m=user&f=logout";// 退出登录
}
}, 1000);
}