超时脚本出现问题


Issues with my timeout script

我正在运行一个脚本,该脚本将在一定的非活动时间后破坏用户的会话。但是,它运行不正确。有人能向我解释一下我做错了什么吗?

<?php
    require("../includes/header.php");
    $expire = time();
    echo $expire ."<br>";
    if(!isset($_SESSION["expire"]) < ($expire + 30)){
        setcookie("User", $_SESSION["user"], 30);
        echo "Welcome " .$_SESSION["user"];
        $_SESSION["expire"] = $expire;
    }
    elseif($_SESSION["expire"] > ($expire + 30)){
        unset($_COOKIE["User"]);
        session_unset();
        session_destroy();
        header("Location: logged_out.php");
    }
?> 

$expire将始终等于$_SESSION["expire"],因为您在页面顶部将$_SESSION["expire"]设置为等于$expire,并且从不更改它们的值。

在验证用户之后设置$_SESSION["expire"]。此外,您的逻辑似乎不正确:

<?php
    require("../includes/header.php");
    $now     = time();
    $expires = $_SESSION["expire"]  + 30;
    if(!isset($_SESSION["expire"]) || $expires > $now){
        setcookie("User", $_SESSION["user"], 30);
        echo "Welcome " .$_SESSION["user"];
        $_SESSION["expire"] = $now;
    }
    else {
        unset($_COOKIE["User"]);
        session_unset();
        session_destroy();
        header("Location: logged_out.php");
    }
?>