2016-12-16 105 views
0

我想在5分钟后注销非活动用户。强制非活动用户注销

我使用此代码跟踪用户活动

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 7)) { 
    // last request was more than 30 minutes ago 
    session_unset();  // unset $_SESSION variable for the run-time 
    session_destroy(); // destroy session data in storage 
    header('Location: ../index.php'); 
    exit; 
} 
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp 

但问题到时候出它不会破坏会话和开放重定向他,除非用户或刷新页面

我想自动登出他

我该怎么做到这一点?

回答

1

由于除非用户重新加载页面,否则不会与服务器进行交互,因此您在此处执行的任何操作都需要使用Javascript。如果是我,我会定期对服务器进行AJAX调用,以查看会话是否已过期,然后在发现超时后将其重定向到另一个页面。请注意,您必须添加标题信息才能停止正在缓存的页面,以便用户无法点击后退按钮(如果您确实想阻止他们查看旧数据)。

对于IE浏览器,你需要设置了不少停止缓存,..这里是我倾向于发送的报头在PHP

header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Last-Modified: ' .gmdate("D, d M Y H:i:s") .' GMT'); 
header('Cache-Control: no-cache, must-revalidate'); 
header('Pragma: no-cache'); 
+0

谢谢你设定的东西。我虽然有没有使用Ajax的方式。感谢您的提示 – jack

+0

您可以在Javascript中运行一个简单的计时器来避免AJAX,但如果您重新引用服务器,您显然可以实现更多的细节 –