大家早上好!我正在寻找一个标识符,当用户连接,但不活动30分钟将由Plesk服务器关闭(关闭会话前30分钟不活动是我的服务器设置)
我有一个应用程序开发在PHP托管和plesk下管理。在会议结束前,我决定不活动的时间。当用户的页面打开超过30分钟而没有任何活动时,他的会话将自动关闭,但没有警告或消息。因此,为了防止他认为应用程序不再工作,我希望能够向他显示一条消息,表明会话已过期,但我无法这样做
谢谢你的帮助。
内的函数每分钟调用一次,我做以下测试:
if (session_status() === PHP_SESSION_DISABLED || session_status() === PHP_SESSION_NONE ) {
respAjax::errorJSON(array('message' => ($usrActif->lang == 'FR' || $usrActif->lang == '' ? 'SESSION EXPIREE' : 'SESSION EXPIRED')));
}
可以在用户登录时启动定时器
let inactivityTimer = setTimeout(function() {
// User has been inactive for 30 minutes, display message
alert('Your session has expired due to inactivity.');
}, 30 * 60 * 1000); // 30 minutes in milliseconds
那么你可以在任何活动发生时重置计时器
// Reset the timer when the user performs an action
function resetTimer() {
clearTimeout(inactivityTimer);
inactivityTimer = setTimeout(function() {
alert('Your session has expired due to inactivity.');
}, 30 * 60 * 1000);
}
// Bind resetTimer to various events that indicate user activity
document.addEventListener('mousemove', resetTimer);
document.addEventListener('keydown', resetTimer);
document.addEventListener('scroll', resetTimer);
// etc.
还可以在用户注销时清除定时器
// Clear the timer when the user logs out
function logout() {
clearTimeout(inactivityTimer);
// Do any other logout logic
}
注意:这与PHP无关,都是javascript
完成的另外,这可能会对某人有所帮助:
另一件事,如果你不想会话过期一整天或直到浏览器关闭,那么你可以做一个简单的jquery调用通过ajax服务器每5-10分钟(相应),它将永远不会过期。如果需要,您还可以在客户端使用此ajax请求更新值。
示例:
function keepSessionAlive() {
$.ajax({
url: "keepSessionAlive.php",
success: function() {
// Session is still alive
},
error: function() {
// Session has expired or there was an error
}
});
}
setInterval(keepSessionAlive, 5 * 60 * 1000); // 5 minutes in milliseconds