простенькая админка на php

89
24 февраля 2022, 18:00

Пытаюсь разобраться как сделать простенькую админку на php. Кое-как собрал регистрацию и логин чтобы писала и сверяла с базой. Но совсем запутался с тем как правильно сделать логику сессионной переменной для скажем пользователей с разными привилегиями.

Буду благодарен за простой пример реализации логики. В инете не могу найти ничего толкового по этой теме.

Ну так чтоб пример был на старом чистом php без ооп и фреймворков. Цель - разобраться как работает.

Answer 1

Вам правильно написали в комментариях, дополню лишь небольшими примерами. Вот так может выглядеть таблица с привилегиями (или ролями):

user_id | privilege
   1    |    1
  134   |    7

То есть юзер с id=1 имеет высшим уровнем доступа, так как мы решили, что чем меньше число, тем круче будет юзер.

Или так, если использовать названия действий:

user_id |   role
   1    | show_news
   1    | edit_news
   1    | remove_news
  134   | show_news

Мы даём юзеру с id=1 права на просмотр, редактирование и удаление новостей, а юзеру id=134 только на просмотр.

Далее, у вас появится функция на получения ID юзера, который делает запрос к серверу:

function getUserId() {
    //тут всё зависит от того, что именно вы будете хранить в $_SESSION по юзеру
    //если сразу ID, то будет так
    return $_SESSION['user'];
}

У вас появится функция проверки роли или привилегии пользователя, что-то вроде этого:

//$role - число, обозначающее уровень доступа (от 1 до 10, например)
//или название действия ("show_news", "edit_news", "remove_news" например)
function canUserDoIt($role) { 
    $user_id = getUserId();
    //Запрос к бд, который достаёт нужную инфу из таблицы с привилегиями
    "SELECT id FROM наша_таблица WHERE $user_id = user_id AND $role = role"
    if (такая запись есть) {
        return true; 
    }
    return false;
}
READ ALSO
Проблема массовой рассылки в Телеграме

Проблема массовой рассылки в Телеграме

Реализовал бота, который каждые 5 минут парсит один сайт с объявлениями и оповещает пользователей по категориям (0-5 оповещений за один раз)

98
Как бы вы упростили эту функцию?

Как бы вы упростили эту функцию?

Как бы вы упростили эту функцию? Функции передается массив items, получаемый с сервера (сугубо для вставки текста на кириллице, кириллицу внутри...

89
Как сократить/улучшить js код?

Как сократить/улучшить js код?

Вечер добрый, помогите пожалуйста сократить/улучшить javascript код

169