在PHP中经过一段时间后,session_destroy()

时间:2013-06-18 21:25:19

标签: 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 ['testing'];

2 个答案:

答案 0 :(得分:6)

这样的事情应该有效

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

答案 1 :(得分: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