我在索引中创建一个会话,这是登录过程发生的地方,然后我将“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。
答案 0 :(得分:2)
您忘记在变量名称前添加$
。所以看起来应该是这样的,
<?php if($logged == TRUE) :?>
当您使用 $ 记录时,如此logged == TRUE
,则记录为常量变量。因为它不会被定义,所以它不会等于TRUE
。