我为公司开发了员工记录系统。我面临的问题是员工离开他们的系统,甚至忘记注销。我希望系统在系统空闲10分钟后注销用户。我几乎不知道如何去做。我需要你的帮助
答案 0 :(得分:1)
我构建的功能类似于您过去使用jQuery Idle尝试实现的功能。它可以检测鼠标和键盘活动,并且只在用户真正处于非活动状态时超时。
https://github.com/kidh0/jquery.idle
示例:
$(document).idle({
onIdle: function(){
windlow.location.href = '/logout.php';
},
idle: 10000
})
答案 1 :(得分:1)
您可以使用此类代码。
<!-- //for 10 minutes // the easiest one!-->
<meta http-equiv="refresh" content="600;url=logout.php" />
请记住logout.php需要一些像这样的代码
session_start();
session_destroy();
unset($_SESSION);
header("Location: 'index.php?stayedToLong=yes');
exit;
或者说php中的SESSION类似
session_start();
//measure the time
$_SESSION['loggedTime'] = time();
//10 minutes
if($_SESSION['loggedTime'] < time()+10*60)
{
session_destroy();
unset( $_SESSION );
header("Location: 'index.php?stayedToLong=yes');
exit;
}
在重定向index?stayedToLong=yes
的index.php页面中,您可以像这样显示页面。
if(isset($_GET['stayedToLong']) && $_GET['stayedToLong']=='yes')
{
echo 'You have are disconnected after 10 minutes';
}
答案 2 :(得分:-3)
这里有几种方法。首先,您的服务器应在经过一段时间后清除会话。您的服务器也应该有一些方法来刷新该会话,通常是某种类型的api端点,它只是刷新会话以使其保持活动状态。
与此相结合,为了避免服务器会话已经结束但前端会话没有的问题,您将需要在每隔几分钟请求会话值的javascript中使用计时器。如果该会话返回非活动状态,那么您将要显示模式或弹出窗口,允许用户继续其会话,或者您只想自动将它们重定向到告诉用户其会话已过期的页面。
在javascript中,您的解决方案可能类似于以下内容。
function confirmSessionRefresh(){
if( confirm('Your session will expire in 1 minute. Click Ok to continue or cancel to log out in 1 minute.') ){
fetch('/api/refreshsession');
setTimeout(confirmSessionRefresh, 540000);
}
}
setTimeout(confirmSessionRefresh, 540000); // 9 minutes (to allow 1 minute to respond to the prompt.