我正在尝试创建一个菜单,根据数据库中的用户访问级别,用户将显示两个不同菜单中的一个。
现在我的代码如下:
if($_SESSION['acl'] == "Administrator"){
echo $_SESSION['acl'];
echo "You are an administrator";
}
{
echo $_SESSION['acl'];
echo "You are a basic user";
}
我的问题是if语句的测试总是失败并直接进入else部分。任何帮助将不胜感激。
答案 0 :(得分:9)
问题是你没有else
部分,你忘了写else
这个词!因此,底部代码块始终正在执行,这就是您总是看到它的原因。
关于为什么检查用户是否为管理员的顶级if()
语句永远不会被调用的原因:这可能是您在没有先调用session_start()
的情况下访问会话变量码。如果不是这样,请确保您之前正确设置了该会话变量。
// start the session (required on all pages using session variables)
session_start();
// I assume that for debug, you print the session variable
echo $_SESSION['acl'];
if($_SESSION['acl'] == "Administrator"){
echo "You are an administrator";
}
else
{
echo "You are a basic user";
}
只是一个建议:我假设代码echo $_SESSION['acl'];
就在那里进行调试。我把它移到了session_start()
之下,因为这样,它仍然被调用,但是你没有写两次。
答案 1 :(得分:0)
有了相同的逻辑,它就是这样的:
if(isset($_SESSION['acl'])){
if($_SESSION['acl'] == "Administrator"){
echo 'You are an administrator';
}
else{
echo 'You are a basic user';
}
}else{
echo 'Session "acl" was not set';
}