我昨天在这里发布了一个问题并得到了快速回复。很棒的社区!
我希望有人可以帮助启发我(PHP 的新手)关于我下面的脚本以及为什么它的执行不一致。
我正在使用以下 session.php 文件来检查登录和会话超时:
`
function logged_in() {
    return isset($_SESSION['user_id']);
    session_write_close();
}
function session_expired() {
    $now = time();
    $limit = $now - 7200; // 2 hour
    return isset($_SESSION['last_activity']) && ($_SESSION['last_activity'] < $limit);
    session_write_close();
}
function confirm_logged_in() {
    $now = time();
    if (session_expired()) {
        $_SESSION = array();
        if(isset($_COOKIE[session_name()])) {
        setcookie(session_name(), '', time()-42000, '/');
        }
        session_destroy();
        redirect_to("http://domain.com/login.php?logout=2");
        exit;
    }
    elseif (!logged_in()) {
        redirect_to("http://domain.com/login.php");
        exit;
    }
    else {
        $_SESSION['last_activity'] = $now;
        session_write_close();
    }
}
?>`
在每一页的顶部,我有:
<?php require_once("../includes/session.php"); ?>
<?php require_once("../includes/functions.php"); ?> defines some other functions I use
<?php confirm_logged_in(); ?>
发生的事情是 session_expired() 并不总是被触发,而不是 redirect_to(" http://domain.com/login.php?logout=2 "); 它转到redirect_to(“ http://domain.com/login.php ”);
谁能看到可能出了什么问题?