PHP 不活动超时和 session_status()
PHP inactivity timeout and session_status()
我试图做一些保护性的事情来防止页面在 php 页面空闲并且会话因不活动而过期时访问数据库。我将其中一些基于 session_status() 并且我对此有疑问。
使用警报和 console.log,我发现 php 和 js 代码似乎没问题。当我人为地注入 session_status() 值时,我得到了我期望的结果。
问题似乎是 session_start() 总是 returns 2(可用),即使在会话超时后也是如此。
我不应该期望 system_status 在不活动超时后自动更新吗?有没有比 session_status() 更好的方法来检查会话状态?
这是 'onclick' 函数,当单击按钮时,returns '2' 在过期页面上 system_status() :
$("#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 ?>);
}
});
要做到这一点还有很长的路要走,但效果很好。
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();
}
我试图做一些保护性的事情来防止页面在 php 页面空闲并且会话因不活动而过期时访问数据库。我将其中一些基于 session_status() 并且我对此有疑问。
使用警报和 console.log,我发现 php 和 js 代码似乎没问题。当我人为地注入 session_status() 值时,我得到了我期望的结果。
问题似乎是 session_start() 总是 returns 2(可用),即使在会话超时后也是如此。
我不应该期望 system_status 在不活动超时后自动更新吗?有没有比 session_status() 更好的方法来检查会话状态?
这是 'onclick' 函数,当单击按钮时,returns '2' 在过期页面上 system_status() :
$("#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 ?>);
}
});
要做到这一点还有很长的路要走,但效果很好。
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();
}