Как сделать, что бы блок отображался только у определённых пользователей

Сразу скажу, что в php я новичок.

Как сделать, что бы через $_SESSION php брал из БД конкретный логин и проверял, через этот ли логин пользователь авторизован, если логин другой, то делал один блок на странице невидимым.

Вот приблизительный пример (моя попытка):

PHP


$login = $_GET['login'];

if (!$_SESSION[$login == 'realHikkan']); {
  <<<HTML
        <style>
            .admin {
                display: none;
            }
        </style>
  HTML;
}

HTML

 <div class="admin">
   <a href="../admin"><button class="green">Панель администратора</button></a> 
 </div>

Структура БД:

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Dmitriy Kondratiuk

Предположим что у пользователя может быть только одна роль и информация про пользователей находится в таблице users. Тогда в users добавляете еще один столбец role. Предположим что есть всего две роли admin с полным доступом ко всем ресурсам сайта и guest имеет ограниченый доступ к ресурсам и может только видеть информацию но не редактировать ее.

Во время авторизации на сайте вы создаете сесию с указанием какую роль имеет пользователь. Например:

$user_info = [массив данных о пользователе полученый с базы];
session_start();
$_SESSION['access_role'] = $user_info['role']; // например 'admin'

Затем в шаблоне страницы проверяете имеет ли пользователь право видеть элемент или часть страницы. Например:

 <div class="nav">
   <?php 
if( $_SESSION['access_role'] == 'admin'){ // проверяем или пользователь админ
       echo '<a href="../admin"><button class="green">Панель администратора</button></a>'; 
}
else {
    echo 'То что может видеть не зарегестрированый пользователь';
} 
   ?>
 </div>

Ето в общих чертах как реализовать то что вам нужно.

→ Ссылка