【问题标题】:How to automatically logout an inactive user in your CMS PHP如何在 CMS PHP 中自动注销非活动用户
【发布时间】:2015-08-12 03:44:58
【问题描述】:

我正试图从我的 CMS 中强制注销非活动用户。超时值存储在我的数据库中名为 PREF_TIMEOUT 的值中。我借用了这段代码并稍作修改。代码似乎没有做任何事情。有谁知道这样做的更好方法,或者可以发现是什么破坏了它?

<?php
function init() {
    parent:: init();
    self::logoutInactiveUser();
}

$timeout = mysql_query("SELECT PREF_TIMEOUT FROM preferences WHERE PREF_ID = '1'");
$result = mysql_fetch_array($timeout);

function logoutInactiveUser() {
    $inactivityLimit = $timeout * 60; // Converted to seconds
    $sessionStart = Session::get('session_start_time');
    if (isset($sessionStart)){
        $elapsed_time = time() - Session::get('session_start_time');
        if ($elapsed_time >= $inactivityLimit) {
            $member = Member::currentUser();
            if($member) $member->logOut();
            Session::clear_all();
            Director::redirect(Director::baseURL() . 'Security/login');
        }
    }
    Session::set('session_start_time', time());
}
?>

【问题讨论】:

    标签: php mysql login content-management-system logout


    【解决方案1】:

    请参考我在链接中的回答:Logout an inactive user using PHP

    根据您当前的代码,问题在于您的查询 $timeout = mysql_query("SELECT PREF_TIMEOUT FROM preferences WHERE PREF_ID = '1'"); $result = mysql_fetch_array($timeout); 位于函数 logoutInactiveUser() 之外,因此变量 $timeout 将没有来自您的数据库的任何数据。将代码移到函数中应该会对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2015-08-18
      • 2014-09-28
      • 1970-01-01
      • 2020-02-13
      • 2011-03-05
      • 1970-01-01
      • 2023-03-16
      • 2022-06-10
      • 2014-10-21
      相关资源
      最近更新 更多