【发布时间】:2017-07-08 11:44:01
【问题描述】:
但是,当用户使用我正在使用的会话空闲时,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 检测所有事件。
【问题讨论】:
-
尝试使用 cookie 设置时间,然后检查
-
使用javascript?
-
否定选民你能解释一下这个问题有什么问题吗?
-
可能是因为当 PHP 已经内置了会话不活动超时处理时,您正在 PHP 中编写自己的会话不活动超时
-
哦,谢谢,我对内置函数一无所知。
标签: javascript php session logout idle-timer