我已经将两个会话变量设置为:
$_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']);。
或者更容易的是,您可以简单地将它们的值设置为null
或0
,然后检查它们的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();
}