但是,当用户使用我正在使用的会话空闲时,PHP 中有很多方法可以注销应用程序
登录时
$_SESSION['last_activity']=time()+10;
在标题中
$expire_time = 10; //10 secs
if($_SESSION['last_activity'] < time()-$expire_time) {
echo 'session destroyed';
}
else {
$_SESSION['last_activity'] = time();
}
此功能基于用户点击或刷新页面甚至在选项卡上注销用户,但不是在 javascript 中可能发生的鼠标事件
var IDLE_TIMEOUT = 900; //seconds
var _idleSecondsCounter = 0;
document.onclick = function () {
_idleSecondsCounter = 0;
};
document.onmousemove = function () {
_idleSecondsCounter = 0;
};
document.onkeypress = function () {
_idleSecondsCounter = 0;
};
window.setInterval(CheckIdleTime, 1000);
function CheckIdleTime() {
_idleSecondsCounter++;
var oPanel = document.getElementById("SecondsUntilExpire");
if (oPanel)
oPanel.innerHTML = (IDLE_TIMEOUT - _idleSecondsCounter) + "";
if (_idleSecondsCounter >= IDLE_TIMEOUT) {
alert('Times up!, You are idle for about 15 minutes, Please login to continue');
document.location.href = "logout.php";
}
}
但这不适用于整个项目或选项卡,如果用户保持一个选项卡空闲并在另一个选项卡上工作,整个项目将被注销,有没有办法让这个脚本全局工作或让 php 检测所有事件。