2010-02-12 6 views
0

내 자신의 세션을 만들었으나 비활성 사용자를 시간 초과하려고합니다. 문제는 세션 시간 초과가 지나가고 다른 페이지를 클릭하면 아무 일도 일어나지 않지만 다시 무언가를 클릭하면 시간이 초과 된 것입니다. Heres 내 코드비활성 계정으로 시간 초과 세션

if(preg_match("#^" . DOMAIN_SSL . ".*#is", $_SERVER['HTTP_REFERER'])) { 
    # connect to main database that holds all accounts 
    $con = mysql_connect('##########', '#########', '############') or die (mysql_error()); 
    $db = mysql_select_db('##########', $con); 

    # find data which is identified via KI 
    $query = mysql_query("SELECT * FROM `accounts` WHERE KI = '$KI' ", $con) or die ("error: " . mysql_error()); 
    # if KI is not found 
    if(mysql_num_rows($query) != 0) { 
     $array = mysql_fetch_array($query); 

     mysql_query("UPDATE `accounts` SET timelog = '" . time() . "' WHERE KI = '$KI' ", $con) or die ("error: " . mysql_error()); 
     # get account information and create a group of constants 
     define("USER_PASS", $array['password']); 
     define("USER_EMAIL", $array['email']); 
     define("USER_DOMAIN", $array['website']); 
     define("USER_FIRST_NAME", $array['fname']); 
     define("DB_USER", $array['db_name']); 
     define("DB_PASS", $array['db_pass']); 
     define("DB_HOST", 'localhost');  
     define("FTP_USER", $array['ftpuser']); 
     define("FTP_PASS", $array['ftppass']); 
     define("FTP_SERVER", $array['ftpserver']); 

     define("MD5_WEBSITE", trim(md5($array['website']))); 
     define("ROOT_FOLDER", $array['rootfolder']); 
     define("TIMELOG", $array['timelog']); 
     define("EDITOR", $array['editor']); 

     # begin to set new KI 
     $time = TIMELOG/60; #return timein minutes 
     $time = floor($time/TIMEOUT); 
     $NEW_KI = md5($_SERVER['REMOTE_ADDR'] . USER_EMAIL . USER_PASS . $time); 
     mysql_query("UPDATE `accounts` SET KI = '$NEW_KI' WHERE KI = '$KI' ", $con) or die ("error: " . mysql_error()); 
     if(strcmp ($NEW_KI, $KI) == 0) { 

      # update KI to reset 15 min timeout 
      define("KI", $NEW_KI);    
      # continue to load pages - success!    
      $USER_CON = mysql_connect(DB_HOST, DB_USER, DB_PASS); 
      $USER_db = mysql_select_db(DB_USER, $USER_CON); 

     }else{ 
      #close open mysql connection 
      mysql_close($con); 
      # produce timeout error message - failed! 
      header("location: " . DOMAIN . "?e=7"); 
    } 
}else{ 
    #close open mysql connection 
    mysql_close($con); 
    # produce timeout error message - failed! 
    header("location: " . DOMAIN . "?e=7"); 
} 
} 

모든 페이지는이 하나의 메인 페이지를 통해 실행됩니다. $ KI는 GET var를 통해 전달됩니다. 이 작업을 수행하는 이유에 대한 도움을 주시면 감사하겠습니다.

답변

0
# begin to set new KI 
    $TEMP_KEY = md5($_SERVER['REMOTE_ADDR'] . USER_EMAIL . USER_PASS . floor((time()/60)/TIMEOUT)); 
    $NEW_KI = md5($_SERVER['REMOTE_ADDR'] . USER_EMAIL . USER_PASS . floor((TIMELOG/60)/TIMEOUT)); 
    mysql_query("UPDATE `accounts` SET KI = '$NEW_KI' WHERE KI = '$KI' ", $con) or die ("error: " . mysql_error()); 
    if(strcmp ($NEW_KI, $TEMP_KEY) == 0) { 

어쨌든 감사합니다.