【发布时间】:2015-04-13 06:22:30
【问题描述】:
我已将两个会话变量设置为:
$_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();
}
?>
但是没有效果,logged_in 保持为 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 文件。
【问题讨论】:
-
尝试将
time() - $_SESSION['last_acted_on']更改为time() - strtotime($_SESSION['last_acted_on']) -
为什么要在 else 情况下更新 $_SESSION['last_acted_on'] ?
-
@Marcus 它没有任何区别。仍然无法取消设置会话变量。请查看问题中的
Edit -
是的,我的错。我只是确保变量的值是有效的时间戳。正如其他人所说,您的会话中存在问题。我也会更新我的答案。