2013-06-18 51 views
1

我目前在我的表單頁面保存會話一定的時間後:session_destroy()在PHP

$ testingvalue = 「SESSION TEST」;

$ _SESSION ['testing'] = $ testingvalue;

在另一頁我打電話會話使用的值:

<?php 
session_start(); // make sure there is a session 

echo $_SESSION['testing']; //prints SESSION TEST??? 
?> 

現在我想用

session_destroy();

銷燬會話。但是我想要做的是在2小時過後,銷燬會話。

任何想法如何做到這一點,我也應該把它放在哪裏?

我有這樣的事情:

<?php 
session_start(); 

// 2 hours in seconds 
$inactive = 7200; 

$session_life = time() - $_session['testing']; 

if($session_life > $inactive) 
{ 
session_destroy(); 
} 

$_session['testing']=time(); 

    echo $_SESSION['testing']; //prints NOTHING? 
    ?> 

請問這項工作?

如果我不活躍的2個多小時,這應該是空白的?:

回聲$ _SESSION [ '測試'];

+5

會議有一些所謂'timeout'。註銷後使用destroy - 或者當yu想手動銷燬會話時,換句話說 - 當你想在它的生命週期過去之前銷燬它。 – ducin

+0

use session_set_cookie_params(int $ lifetime);對於你的例子,終身會是7200秒 – Orangepill

+0

我期待的是如果用戶在2小時後回到頁面,會話將不會保留任何東西。 – Si8

回答

5

像這樣的東西應該工作

<?php 
// 2 hours in seconds 
$inactive = 7200; 
ini_set('session.gc_maxlifetime', $inactive); // set the session max lifetime to 2 hours 

session_start(); 

if (isset($_SESSION['testing']) && (time() - $_SESSION['testing'] > $inactive)) { 
    // last request was more than 2 hours ago 
    session_unset();  // unset $_SESSION variable for this page 
    session_destroy(); // destroy session data 
} 
$_SESSION['testing'] = time(); // Update session 
+0

我添加了代碼並將測試,如果它工作,將接受您的答案。謝謝 – Si8

+0

我可以在Login.php類的__construct函數中包含這個嗎?或者我把它放在每個會話是強制性的頁面上? – Lobato

1

你需要一個靜態的開始時間到期。無論如何,$session_life > $inactive將永遠更大。

session_start(); 

$testingvalue = "SESSION TEST"; 
$_SESSION['testing'] = $testingvalue; 

// 2 hours in seconds 
$inactive = 7200; 


$_SESSION['expire'] = time() + $inactive; // static expire 


if(time() > $_SESSION['expire']) 
{ 
$_SESSION['testing'] = ''; 
session_unset(); 
session_destroy(); 
$_SESSION['testing'] = '2 hours expired'; // test message 
} 

echo $_SESSION['testing']; 

session-set-cookie-params

相關問題