我正在尝试做一些保护措施,以防止页面在php页面空闲且会话因不活动而过期时访问数据库。我将其中一些基于session_status()并且遇到了问题。
使用alert和console.log,我发现php和js代码似乎没问题。当我人为地注入session_status()值时,我得到了我期望的结果。
问题似乎是session_start()总是返回2(可用),即使在会话超时后也是如此。
我不应该期望在不活动超时后自动更新system_status吗?有没有比session_status()更好的方法来检查会话状态?
这是'onclick'函数,当单击按钮时,在过期页面上为system_status()返回'2':
$("#save-to-database").click(function () {
var active = <?php echo session_status(); ?>;
if(active == 2) { //the session is active, do the sort & save
saveStuff();
} else { // the login has expired, abandon this and reload index.php
window.location.replace("index.php?artist=" + <?php echo $artist ?>);
}
});
答案 0 :(得分:1)
这还有很长的路要走,但这很好用。
function isSessionActive() {
session_start();
$lastActivity=$_SESSION['lastActivity'];
if ($lastActivity!=null && ($lastActivity+(10*60) > time())) {
$_SESSION['lastActivity']=time();
return true;
} else {
deleteSession();
return false;
}
}
function deleteSession() {
session_start();
setcookie("PHPSESSID", "", time() - 3600, '/');
session_unset();
session_destroy();
}