1

我正在尝试创建一个菜单,根据数据库中的用户访问级别,将向用户显示两个不同菜单之一。

现在我的代码如下:

if($_SESSION['acl'] == "Administrator"){
    echo $_SESSION['acl'];
    echo "You are an administrator";
}
{
    echo $_SESSION['acl'];
    echo "You are a basic user";
}

我的问题是 if 语句的测试总是失败并直接进入 else 部分。任何帮助,将不胜感激。

4

2 回答 2

10

问题是你没有一个else部分,你忘了写这个词else!结果,底部的代码块总是被执行,这就是你总是看到它的原因。

关于为什么if()永远不会调用检查用户是否为管理员的 top 语句:这可能是您在访问会话变量时没有先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()因为这样,它仍然总是被调用,但你不会写两次。

于 2012-12-13T14:31:36.877 回答
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';
    }
于 2012-12-13T14:36:42.213 回答