Php会话布尔值总是true


Php sessions boolean always true

我在索引中创建一个会话,这是登录过程发生的地方,然后我保存"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。

您忘记在变量名前添加$。它应该是这样的

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

当您使用没有$的日志时,就像logged == TRUE一样,它将日志作为常量变量。因为它没有被定义它不会等于TRUE