【问题标题】:Force inactive user to logout强制非活动用户注销
【发布时间】:2016-12-16 00:43:39
【问题描述】:

我想在 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

但问题是当时间到时它不会破坏会话并重定向他,除非用户打开或刷新页面

我想自动注销他

我怎样才能做到这一点?

【问题讨论】:

    标签: php session


    【解决方案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'); 
    

    【讨论】:

    • 谢谢。我虽然有办法不使用ajax。感谢您的提示
    • 您可以在 Javascript 中运行一个简单的计时器来避免 AJAX,但如果您参考服务器,显然可以实现更多细节
    猜你喜欢
    • 2014-10-21
    • 2015-08-18
    • 2010-10-09
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 2011-03-05
    • 2022-06-10
    • 2019-04-30
    相关资源
    最近更新 更多