我想在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
但问题是,当时间结束时,它不会破坏会话并重定向他,除非用户打开或刷新页面
我想自动将他退出
我怎样才能实现这一目标?
答案 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');