1

データベースにユーザー用のテーブルがあり、各ユーザーには auth_level (1-3) があります。私のサイトには、新しいユーザー アカウントを追加/削除するための管理ページがあります。このページへのアクセスを、認証レベル 3 のユーザーのみに制限したいと考えています。 . 誰かが私を助けてくれることを願っています。

アクセスを制限するための私のコードは次のとおりです。どこが間違っているのかわかりません。check.php がセッションを開始します。

<?php
require_once('check.php');

//This function returns True if auth level = '3'
//Otherwise it returns False
function CheckAccess()
{
    $result = (isset($_SESSION['SESS_AUTH_LEVEL']) &&  $_SESSION['SESS_AUTH_LEVEL'] == 3 );

    if(!$result)
    {
        header('WWW-Authenticate: Basic realm=“Test restricted area”');
        header('HTTP/1.0 401 Unauthorized');
        return false;
    }
    else
    {
        header("location: admin.php");
    }
}
?>

認証レベル 1 または 3 のユーザーとしてログインすると、同じ空白のページが表示されます。

4

4 に答える 4

3

私はあなたが電話することはないと思いますCheckAccess()。それを呼び出すと、おそらくエラーが修正されます。

于 2013-05-03T10:52:45.937 に答える
1

関数が行っている次のことを行うことは完全に有効です。

if (this=that) { /*do multiple*/ } else //do single;

しかし、この関数を呼び出していないように見えますか? これを試して:

<?php
  require_once('check.php');
  CheckAccess();
?>
于 2013-05-03T10:53:14.120 に答える
0

関数の終了が欠落している}ため、すべての if ステートメントが PHP によってメソッドの一部として認識されます。

}前後$result =に追加if

あなたが望むものを達成するはずのわずかに代替バージョンは

<?php

function CheckAccess() {
    $result = (isset($_SESSION['SESS_AUTH_LEVEL']) &&  $_SESSION['SESS_AUTH_LEVEL'] == 3 );
    return $result;
}

if (CheckAccess()) {
    header("location: admin.php");
} else {
    header('WWW-Authenticate: Basic realm=“Test restricted area”');
    header('HTTP/1.0 401 Unauthorized');
}
于 2013-05-03T10:46:58.283 に答える