我的PHP功能不起作用

时间:2015-05-23 05:44:04

标签: php mysql

我正在为自己做更多的事情,那是我拥有的另一个网站。它涉及许多具有权限等的组,现在我有一个看起来像这样的功能

function hasPermission($user, $permission){
    global $connection;

    $sql = "SELECT * FROM admins WHERE `ID` = '". $user ."'";

    $rs = $connection->query($sql);

    if ($rs){
        $user = $rs->fetch_array(MYSQL_ASSOC);
        $userRank = $user['Rank'];

        $sql = "SELECT * FROM `ranks' WHERE `RankName` = '". $userRank ."'";
        $rs = $connection->query($sql);

        if ($rs){
            $rank = $rs->fetch_array(MYSQL_ASSOC);

            if ($rank[$permission] == 1){
                return true;
            }
            else{
                return false;
            }
        }
    }
    else{
        echo($connection->error);
    }
}

然后,当我使用像if (hasPermission($_SESSION['ID'], 'IsFullAccess') == true)这样设置的参数调用函数时,它返回false,我收到自定义错误消息,说我没有权限。是的,在我的数据库中,该等级的“IsFullAccess”列设置为1。

我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

阅读完代码后,您似乎不熟悉sql的JOIN

您的查询如下所示:

$sql= "SELECT r.$permission as p FROM admins a JOIN ranks r ON a.rank=r.RankName WHERE a.ID=$user";
$rs = $connection->query($sql);
if (!$rs)
    return false;
$hasPermission = $rs->fetch_array(MYSQL_ASSOC);
return $hasPermission['p'];

(请记住sql injection

确保db在php

中测试之前返回您期望的结果

答案 1 :(得分:0)

尝试使用hasPermission($_SESSION['ID'], 'IsFullAccess') == 1)代替hasPermission($_SESSION['ID'], 'IsFullAccess') == true)。 (true应转换为1