7

なぜ私がこれを機能させることができるのかについて誰かが何か光を当てることができますか?配列をクエリして、現在ログインしている配列に特定の役割が割り当てられている
かどうかを確認したいと思います。USER->id

$contextroles = get_records_sql("SELECT userid FROM {$CFG->prefix}role_assignments WHERE contextid = 23 AND roleid = 3");

function object2array($object) {
    if (is_object($object)) {
        foreach ($object as $key => $value) {
            $array[$key] = $value;
        }
    }
    else {
        $array = $object;
    }
    return $array;
}

$alloweduser = object2array($contextroles);

if (in_array($USER->id, $alloweduser)) {
    echo'Your in<br />';
    echo $USER->id.'<br />';
    print_r($alloweduser);
}
else{
    echo'<br />You do not have permission to acces this database.<br />';
    echo $USER->id.'<br />';
    print_r($alloweduser);
    exit;
}

私は現在この出力を取得しています:

このデータベースにアクセスする権限がありません。

5410

配列([7] => stdClassオブジェクト([userid] => 7)[9] => stdClassオブジェクト([userid] => 9)[27] => stdClassオブジェクト([userid] => 27)[98] => stdClass Object([userid] => 98)[203] => stdClass Object([userid] => 203)[252] => stdClass Object([userid] => 252)[5410] => stdClass Object( [ユーザーID]=>5410))

ご覧のとおり、5410は配列内にあるため、アクセスが拒否されないようにする必要があります。助けてくれてありがとう。

4

1 に答える 1

3

を使用する5410 != stdClass Object ( [userid] => 5410 )場合in_array()

配列キーはと同じように見えるので、代わりuseridに使用isset($alloweduser[$USER->id])します。

于 2011-09-01T13:54:26.147 に答える