PHP不活动超时和session_status()

时间:2018-01-30 21:50:05

标签: php session-state session-timeout

我正在尝试做一些保护措施,以防止页面在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 ?>);

    }
});

1 个答案:

答案 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();
}