比较PHP中的会话变量

时间:2012-12-13 14:30:16

标签: php if-statement compare session-variables

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

现在我的代码如下:

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

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

2 个答案:

答案 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';
    }