用于注销应用程序的倒数计时器

时间:2017-07-26 15:28:24

标签: javascript php jquery ajax

我为公司开发了员工记录系统。我面临的问题是员工离开他们的系统,甚至忘记注销。我希望系统在系统空闲10分钟后注销用户。我几乎不知道如何去做。我需要你的帮助

3 个答案:

答案 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.