PHP中的会话值未过期


Session value in PHP not expiring

我已经将两个会话变量设置为:

$_SESSION['logged_in'] = 1;
$_SESSION['last_acted_on'] = time();

我正在尝试用重置会话变量logged_in的值

<?php
session_start();
if( isset($_SESSION['last_acted_on']) && (time() - $_SESSION['last_acted_on'] > 120) ){ //2mins
   session_unset('last_acted_on');     // unset $_SESSION variable for the run-time
    session_unset('logged_in');
    session_unset();
    unset($_SESSION['last_acted_on']);
    unset($_SESSION['logged_in']);
session_destroy();   // destroy session data in storage
    return;
}
else{
    $_SESSION['last_acted_on'] = time();
}

?>

但没有任何影响,CCD_ 2保持为1。有什么建议吗?

EDIT:我已将我的代码更新为:

if( isset($_SESSION['last_acted_on']) && (time() - strtotime($_SESSION['last_acted_on']) > 120) ){ //2mins
   unset($_SESSION['last_acted_on']);     // unset $_SESSION variable for the run-time
   unset($_SESSION['logged_in']);
    session_unset();
    session_destroy();   // destroy session data in storage
    return;
}
$_SESSION['last_acted_on'] = time();

此外,当我刷新页面或在页面上来回导航时,会话值是未设置的。为什么它在2分钟的时间段之后没有被取消设置?请注意,使会话变量过期的页面刷新正在调用unsetsession.php文件。

错误使用session_unset。

void session_unset ( void )  

你需要的是

unset($_SESSION['yourvalue'])

我认为会话变量未设置存在问题。如果要刷新会话本身,可以使用session_destroy(),它将清除$_SESSION数组。否则,您可以使用unset()函数,如下所述。

注意:如果$_SESSION(或适用于PHP 4.0.6或更低版本的$HTTP_SESSION_VARS)已使用,请使用unset()注销会话变量,即unset($_SESSION['varname']);。

或者更容易的是,您可以简单地将它们的值设置为null0,然后检查它们的empty条件,如下所示:

<?php
session_start();
$session = &$_SESSION;
if( !empty($session['last_acted_on']) && (time() - $session['last_acted_on'] > 120) ){ //2mins
   unset($session['last_acted_on']);     // unset $_SESSION variable for the run-time
    unset($session['logged_in']);    
    return;
}
else{
    $session['last_acted_on'] = time();
}