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

我的问题是:是否有更好的方法来验证这一点(例如,是否应该嵌套所有三个条件)或者这是否足够?

干杯,

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 回答