某些语句的管理员检查-无法传递true / false值

时间:2019-03-29 17:05:53

标签: php

首先,如果我在提问中没有提供足够的信息,请原谅我,我是开发人员领域的新手,几周前,我刚刚成为初级软件开发人员,这是一个很棒的机会。

我有一个正在处理的项目,它是一个基本的CRUD管理系统。 我有一个登录过程,所有设置都由用户帐户完成,但是我希望某些事情需要“管理员”权限,例如从库存中删除物品。

因此,当前所有内容都按原样运行(只是无需管理员检查)

我已经在我的config.php中实现了此功能(通过标头包含在每个页面中)

function checkAdmin($conn)
{
    $id = $_SESSION['member_id'];
    $sql = "SELECT admin FROM members WHERE id = $id";
    $query = mysqli_query($conn, $sql);
    $rs = mysqli_fetch_array($query);
    $admin = $rs['admin'];
    if($admin == 1){
        return true;
    }else{
        return false;
    }
}

所以我的问题是,我该如何将该值“ true / false”传递给我的查询。 我使用jQuery / Ajax进行查询,但是我知道这将在我所有查询所在的“ ajax.php”页面上处理。 我当前的代码是:

if(isset($_GET['deleteID']))
{
    if('checkAdmin' == true){
    $id = $_GET['deleteID'];

    $sql = "DELETE FROM members WHERE id=$id";
    mysqli_query($conn, $sql);

    recordLog($conn, "Members", "Removed user #$id");

    $data = [
            'success'   =>  true
    ];
    }else{
        $data = [
                'error' =>  'Admin Privileges Required'
        ];
    }

    echo json_encode($data);
}

没有If(checkAdmin ==语句,实际的代码本身可以工作,但是我认为我的代码并不正确。

在此先感谢您的帮助:)如果需要更多信息,请告诉我

1 个答案:

答案 0 :(得分:1)

if语句中调用该函数:

if(checkAdmin($conn) == true){

或者,您可以这样做:

$checkAdmin = checkAdmin($conn);
if($checkAdmin == true){

请注意,您面临严重的SQL注入风险。立即实施:How can I prevent SQL injection in PHP?这很糟糕,很糟糕,很糟糕:

$id = $_GET['deleteID'];
$sql = "DELETE FROM members WHERE id=$id";