在PHP中,session_destroy()在一段时间后失效


session_destroy() after certain amount of time in 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小时,这应该是空白的吗?:

echo $ _SESSION['测试'];

像这样应该可以工作

<?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

您需要一个静态的开始时间来过期。$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