@xdemo

Как правильно организовать проверку ролей на доступ?

Здравствуйте в общем проблема у меня такая, пытаюсь на сайте организовать роли, но мне все время возвращает результат 'int(1)' хоть я и меняю пользователю права с 1 на 2 или 3, вот сам код проверки:

//деление на группы
define('ADMIN_ADMIN', 1);
define('ADMIN_VIP', 3);
define('ADMIN_USER', 2);

// данные и провера для админки start
$userID = $user['id'];
$userGroup = mysql_query("SELECT user_group FROM users WHERE id=$userID");
$result = mysql_fetch_array($userGroup);
$result = (int)$result;

// Проверяем результат
if ($userGroup == ADMIN_ADMIN) {
echo 'Ты админ';
} else if ($userGroup == ADMIN_VIP) {
echo 'ты не админ, а вип';
} else if ($userGroup == ADMIN_USER) {
echo 'Нет доступа!';
}

подскажите где я в чем ошибся? не судите строго я новичок в этом)
  • Вопрос задан
  • 175 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
$userGroup = mysql_query("SELECT user_group FROM users WHERE id=$userID");
$result = mysql_fetch_array($userGroup);
$result = (int)$result;

$result - это массив. А вы его к int приводите. Разумеется, там всегда или 1 или 0 (для пустого массива).
А потом вы ресурс, который возвращается из mysql_query, начинаете сравнивать с константами. Неудивительно, что ничего не работает.
Будьте внимательнее, учитесь понимать, что вы пишете.

"Правильный" код:
$userGroup = mysql_query("SELECT user_group FROM users WHERE id=$userID");
$result = mysql_fetch_array($userGroup);
$userGroup = (int)$result['user_group '];


Obligatory "mysql_* is deprecated" comment.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы