PHP会话验证

时间:2012-10-30 11:58:09

标签: php validation session

我想编写一个只能由管理员访问的脚本。

这就是我想要的方式:

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

3 个答案:

答案 0 :(得分:4)

如果人员权利不可能随时改变(即:你删除管理员权限),那么这应该足够了,尽管我已经建立了一个功能:

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

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

对于这种情况,您将来会使用扩展权限检查。

答案 1 :(得分: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

答案 2 :(得分: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();
}