Я предполагаю, что это не работает, потому что вы не присвоили $ _SESSION ['role'] значение, когда пользователь вошел в систему, и у вас нет оператора, чтобы проверить, не назначено ли оно.
В любом случае этот код будет работать:
<?php
session_start(); // If we remove this then we get error Session not set
$role = "admin"; // If we change the role to something else we get access not granted
if(isset($_SESSION['role'])) {
if($_SESSION['role'] == $role) {
echo "Welcome admin";
} else {
echo("Access not granted");
exit();
}
} else {
echo "Session not set!";
}
Нам нужно сначала инициализировать session_start ().Я вручную назначаю роль, но вы должны взять ее из запроса базы данных, чтобы проверить, есть ли у пользователя права администратора или нет.Затем мы проверим, установлена ли сессия.Если это не так, мы будем отображать сообщение сеанс не установлен.
Если установлен сеанс, нам нужно сравнить роль с ролью пользователя.Если он совпадает, мы получаем приветственный приветственный администратор, а если роль - что-то еще, мы получаем доступ к сообщению, не предоставленному.
Я предлагаю немного проверить руководство php, чтобы больше посмотреть на сессии.Это действительно легко забыть что-то, и тогда все это просто не работает.По крайней мере, это было из моего предыдущего опыта.