Php会话布尔值始终为true

时间:2016-09-16 09:54:23

标签: php session

我在索引中创建一个会话,这是登录过程发生的地方,然后我将“username,IsAdmin,logged,first_name,last_name”保存到会话中。

 session_start();
$_SESSION["logged"] = FALSE;

$logged = TRUE;             
$_SESSION["username"] = $username;
$_SESSION["IsAdmin"] = $IsAdmin;
$_SESSION["logged"] = $logged;
$_SESSION["first_name"] = $first_name;
$_SESSION["last_name"] = $last_name;
header("Location:home.php");

如果用户已登录,我想显示它所执行的主页,但即使用户未登录,它也始终显示该页面。

当我将if语句更改为false时,页面会正确隐藏,因此它必须是它的值。

但所有其他变量都会在会话中传递好。

<?php 
    Include('../connect.php');
    session_start();

    $IsAdmin = FALSE;
    $logged = FALSE;
    $username = "";

    $username = $_SESSION["username"];
    $IsAdmin = $_SESSION["IsAdmin"];
    $logged = $_SESSION["logged"];
    $first_name = $_SESSION["first_name"];
    $last_name = $_SESSION["last_name"];
    ?>

    <?php if(logged == TRUE) :?>
    <?php Include('../navigation.php'); ?>

     //CODE TO SHOW WHEN LOGGED INA

    <?php Include('../footer.php'); ?>
</body>
</html>
<?php endif; ?>

由于缩进问题,我不得不摆脱一大堆html。

1 个答案:

答案 0 :(得分:2)

您忘记在变量名称前添加$。所以看起来应该是这样的,

 <?php if($logged == TRUE) :?>

当您使用 $ 记录时,如此logged == TRUE,则记录为常量变量。因为它不会被定义,所以它不会等于TRUE