2009-10-19 76 views
0

嗨, 我有會話超時的代碼,但我不知道最新的問題它不工作的人請看看這個,並幫助我。這裏是代碼:會話超時在PHP

$inactive = 10; 

    // check to see if $_SESSION['timeout'] is set 

    if(isset($_SESSION['timeout'])) { 

    $session_life = time() - $_SESSION['timeout']; 

    if($session_life > $inactive) 

    { 
     session_destroy(); 
     header("Location: logoutpage.php"); } 
    } 

    $_SESSION['timeout'] = time(); 

謝謝。

+6

它是如何工作的?你觀察到的什麼行爲與你期望看到的不同? – Amber 2009-10-19 11:13:10

+0

在代碼之前是否有session_start()? – Greg 2009-10-19 11:26:08

回答

4

time()變量返回當前時間,以Unix Epoch(1970年1月1日00:00:00 GMT)以來的秒數度量。您的$ inactive變量意味着您希望將會話保持打開狀態10分鐘,但您可能會發現將此切換爲秒以便與使用time()函數保持一致更方便。

// set inactive to 10 minutes (in seconds) 
$inactive = 600; 

if (!empty($_SESSION['timeout'])) { 

    // set session life to current time minus timeout 
    $session_life = time() - $_SESSION['timeout']; 

    // check if your session life is greater than 10 minutes 
    if ($session_life > $inactive) { 
     session_destroy(); 
     header("Location: logoutpage.php"); 
     die; 
    } 

} 

$_SESSION['timeout'] = time(); 
+2

我很確定發佈在問題中的代碼顯示了$ _SESSION ['timeout']的設置。具體來說,最後一行。 – Amber 2009-10-19 11:27:27

+0

我對10分鐘的會話是否正確?如果是這樣,這應該修復你的代碼的方面。如果您仍然遇到其他問題,您將不得不通知我們。 – 2009-10-19 11:35:25