比较PHP中的会话变量

use*_*244 0 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";
}
Run Code Online (Sandbox Code Playgroud)

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

Ant*_*ton 9

问题是你没有一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";
}
Run Code Online (Sandbox Code Playgroud)

只是一个建议:我假设代码echo $_SESSION['acl'];只是用于调试.我把它移到了下面,session_start()因为这样,它仍然被调用,但你不是两次写它.