Я попытался взять уровень пользователя из моей базы данных и проверить, какой уровень у пользователя. Когда я пытаюсь сделать это:
include "../web/config.php";
$adminTrueQuery = mysql_query("SELECT * FROM `users` WHERE `Username` = '$admin_username' AND `Password` = '$admin_password' LIMIT 1;");
$adminLevel = mysql_fetch_array($adminTrueQuery);
$adminLevel = $adminLevel['Level'];
if($adminLevel !== "c" || "b") {
throw new Exception ("You don't admin {$adminLevel}"); // return
}
Я получаю ошибку. А также
$adminLevel = "c";
В чем проблема?
Это не то, как многократные сравнения работают в PHP. Вам нужно сравнить оба значения с исходным значением:
if($adminLevel !== "c" && $adminLevel !== "b") {
Или, если у вас есть много значений для проверки, используйте in_array()
:
if(!in_array($adminLevel, ['b','c'])) {
$adminLevel = "c";
не будет работать, потому что =
является оператором присваивания, а не оператором сравнения. Это всегда будет возвращать true, если значение, которое вы пытаетесь сравнить, жонглирует типом с истинным значением (что и делают ваши значения).
Других решений пока нет …