2015-05-29 78 views
0

我试图从CMS注销非活动用户。超时值存储在我的数据库中名为PREF_TIMEOUT的值中。我借用了这段代码并修改了一下。代码似乎没有做任何事情。有没有人知道这样做的更好方法或可以发现什么是打破它?如何自动注销CMS中的非活动用户PHP

<?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()); 
} 
?> 

回答

0

请参阅我的回答链接:Logout an inactive user using PHP

根据你当前的代码,问题是你的查询 $timeout = mysql_query("SELECT PREF_TIMEOUT FROM preferences WHERE PREF_ID = '1'"); $result = mysql_fetch_array($timeout); 是功能logoutInactiveUser()外,由于该变量$超时将不会从你的数据库有任何数据。移动函数内的代码应该会对你有所帮助。