强制非活动用户注销

时间:2016-12-16 00:43:40

标签: php session

我想在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 个答案:

答案 0 :(得分: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');