1

データベース内のユーザー アクセス レベルに基づいて、ユーザーに 2 つの異なるメニューのいずれかが表示されるメニューを作成しようとしています。

現在、私のコードは次のとおりです。

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。その結果、一番下のコード チャンクが常に実行されているため、常に表示されます。

ユーザーが管理者であるかどうかを確認する topif()ステートメントが呼び出されない理由については、コードの先頭で最初に呼び出さずにセッション変数にアクセスしている可能性が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()が、2回書いているわけではありません。

于 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 に答える