2

管理者のみがアクセスできるスクリプトを作成したいと考えています。

これが私がやりたい方法です:

session_start();

if (!isset($_SESSION['user_id'])) { //not logged in

    //redirect to homepage
    header("Location: http://domain.com/index.php");
    die();

}

if ($_SESSION['user_level'] != 1337) { //not admin

    //redirect to homepage
    header("Location: http://domain.com/index.php");
    die();

}

if ($_SERVER['REQUEST_METHOD'] == 'POST') { //form is submitted

    //validate the submitted data
    //submit the query

}

//form goes here

私の質問は次のとおりです。これを検証するより良い方法はありますか (たとえば、3 つの条件をすべてネストする必要がありますか)、それともこれで十分ですか?

乾杯、

n1te

4

3 に答える 3

4

個人の権限がその場で変更される可能性がない場合 (つまり、管理者権限を削除する場合)、これで十分ですが、関数を作成します。

function IsAdmin() {
    if( !isset($_SESSION['user_level'])){
        return false;
    }

    return ($_SESSION['user_level'] == 1337);
}

将来、拡張権利チェックを使用する場合に備えて。

于 2012-10-30T12:03:04.343 に答える
1

以下は少し整頓されています...ただし、 $_SESSION['user_id'] で検証を実行して、それが int または期待するデータ型であることを確認したい場合があります...

session_start();

if (!isset($_SESSION['user_id']) || $_SESSION['user_level'] != 1337) { //not logged in

    //redirect to homepage
    header("Location: http://domain.com/index.php");
    exit(); // NOT DIE :P

}


if ($_SERVER['REQUEST_METHOD'] == 'POST') { //form is submitted

    //validate the submitted data
    //submit the query

}

//form goes here
于 2012-10-30T12:01:39.773 に答える
0

私は書くだろう:

if (!isset($_SESSION['user_id']) || $_SESSION['user_level'] != 1337) {
    //not logged in/not admin
    //redirect to homepage
    header("Location: http://domain.com/index.php");
    die();
}
于 2012-10-30T12:02:24.370 に答える