2014-10-10 64 views
1

我有一個在線系統,需要用戶閒置60分鐘後註銷。從時間刪除一個小時()

現在,當前的代碼可以計算出什麼時間少了30分鐘。

$cut = time() - 30*60; 

現在我會想,以下將刪除一個小時,所以超時是60分鐘。

$cut = time() - 60*60; 

這是發生的完整代碼。在不活動60分鐘後,我需要該人員註銷。

// Time out Users 60 minutes 
    $last = $_SESSION['time']; 
    $cut = time() - 60*60; 

    if ($last < $cut) 
     { 
      session_destroy(); 

      $get = $_GET; 
      $location = 'login.php?timeout=true'; 
      foreach($get as $key => $item) 
       { 
        $location .= '&'.$key."=".$item; 
       } 
      header('Location: '.$location); 
     } 
    else 
    $_SESSION['time'] = time(); 

現在,代碼不起作用,我不認爲。

+0

Mayby這可以幫助你如何設置會話的生命週期! http://stackoverflow.com/q/6360093/3933332 – Rizier123 2014-10-10 13:10:03

+0

你需要該人被註銷(即:會議被銷燬)。你需要'?timeout = true'嗎?如果沒有,請將最大會話生存期設置爲3600 - http://php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime – 2014-10-10 13:10:05

+0

我認爲您需要了解會話處理程序類。 http://php.net/manual/en/sessionhandler.destroy.php – Naeem 2014-10-10 13:11:20

回答

1

使用的strtotime()代替它可以來得心應手

聲明這樣的會議,每次用戶進行REQ。

$_SESSION['time'] = strtotime("now"); 

編碼部分

$last = $_SESSION['time']; 

$cut = strtotime("-60 min"); 


if ($last < $cut) //can also use strtotime("-60 min") directly 
    { 
     // session_destroy(); 
     unset($_SESSION['time']); //use inorder to delete only that session 


     $get = $_GET; 
     $location = 'login.php?timeout=true'; 
     foreach($get as $key => $item) 
      { 
       $location .= '&'.$key."=".$item; 
      } 
     header('Location: '.$location); 
    } 
else 
$_SESSION['time'] = strtotime("now"); 

確保會議在每個頁面開始。

工作正常...

1

如果你只是想看看它已經一個多小時,因爲$_SESSION['time']已經過期更多,只需添加一個小時到了那個時候,現在把它比作。如果它比現在少一個小時以前。

$now = new DateTime(); 
$last = new DateTime('@' . $_SESSION['time']); 
$last->modify('+1 hour'); 
if ($last < $now) { 

} 

或者從現在減去一個小時,看看它是否仍然大於$_SESSION['time']

$now = new DateTime(); 
$now->modify('+1 hour'); 
$last = new DateTime('@' . $_SESSION['time']); 
if ($last < $now) { 

} 
0

你需要時間給出如下

$cut = time(); 
$lesstime = date('YOUR TIME FORMATE',strtotime($cut,"-1 hours")); 
0

與下面的代碼嘗試轉換:

$cut = time() - 60*60; 

低於

$cut = strtotime('-1 hour');