0

我一直在为此痛打我的头。我的代码实际上与其他可以工作的项目相同。这是我的做法:

session_start();
set_up_session($username);
redirect_to('index.php');

以及两个功能:

 function redirect_to($location=null) {
        if($location!=null) {
        header("Location: {$location}");
        exit;
        }
    }

    function set_up_session($username) {
        session_start();
        $_SESSION['user_id']=$id;
        $_SESSION['logged_in']=true;
        $_SESSION['username']=$username;
    }

如果我注释掉重定向并回显任何$_SESSIONvar,则 var 读取正确。但是在重定向之后,会话结束。

这就是下一页的内容。

<?php if (!isset($_SESSION['logged_in'])) { ?>

// do stuff  <-- this is what gets shown showing session is no longer active

<?php } else { ?>

<p>Hi, <?php echo $_SESSION['username']; ?></p>


<?php } ?>
4

2 回答 2

0

我要做的第一步是在下一页尝试这个:

<?php 
    if (isset($_SESSION['logged_in'])) {
        echo $_SESSION['username'];
    } else {
        //do stuff
    }
?>

我之前在处理会话时遇到了一个问题。我对这个问题的解决方案是设置一个 $_SESSION[]; 到一个变量。前任:

<?php

    $Username = "Guest"; //Set your variable before you actually need it. (This is what fixed my problem) 
    if (isset($_SESSION['logged_in'])) {
        $Username = $_SESSION['username'];
    }


?>

注意:您可能想要更改 if (isset($_SESSION['logged_in'])) 以检查是否设置了用户名。例如:

<?php
    $User = "Guest";
    if (isset($_SESSION['username'])) {
        $User = $_SESSION['username'];
    } else {
        //do stuff
    }

?>

此外,正如其他用户所述,请确保您重定向到的页面具有 session_start(); 在其中发挥作用。否则,这将不起作用。

于 2013-08-31T14:31:13.783 回答
0

确保您要重定向到的页面session_start()位于文档顶部

if(!isset($_SESSION)){
    session_start();
}
于 2013-08-31T14:22:18.623 回答