Я пытаюсь запретить пользователям получать доступ к страницам, используемым администратором и пользователем-администратором. Прямо сейчас пользователь может перейти на каждую страницу, манипулируя URL.
Роли пользователя определяются в базе данных с числом от 1 до 3, где 1 представляет администратора, 2 представляет пользователя-администратора и 3 представляет пользователя.
То, что я ищу, — это решение, при котором страница, на которую пользователь хочет перейти, проверяет роль вошедших в систему пользователей. Если перемещаемая страница предназначена для администратора, пользователь должен иметь роль № 1. Если у пользователя нет прав на страницу, я хочу, чтобы его сеанс завершился и был отправлен обратно на страницу входа. login.php
Я пробовал некоторые решения, такие как положить
$_SESSION['role'] = $role;
{
//check if user if signed in
if($_SESSION['1'] == false)
{
echo 'Error. You do not have access';
}
}
die();
на каждой странице. Прямо сейчас я не получаю никаких ошибок с этим кодом. Но это тоже не работает: /
Любая помощь приветствуется!
<?php
//You can save user role in session like:
define('ADMIN_ACCESS', 1);
define('USER_ADMIN_ACCESS', 2);
define('USER_ACCESS', 3);
$_SESSION['role'] = ADMIN_ACCESS; // Admin (Any one of three)
$_SESSION['role'] = USER_ADMIN_ACCESS; // User Admin (Any one of three)
$_SESSION['role'] = USER_ACCESS; // User (Any one of three)
//On every page, add a variable which user role can access this page.
$requiredRole = ADMIN_ACCESS;
//Write a custom function to check user role.
function isAuthorized($requiredRole = NULL) {
if (session_id() == '') {
return FALSE;
}
if (isset($_SESSION['role'])) {
if ($_SESSION['role'] == ADMIN_ACCESS) {
return TRUE; // Administrator has access to every page/functionality.
}
if ($requiredRole < $_SESSION['role']) {
return FALSE;
}
}
return FALSE;
}
//And now, check if user can access the page or not by calling the function.
//On every page, add a variable which user role can access this page.
$requiredRole = ADMIN_ACCESS;
if (! isAuthorized($requiredRole)) {
// Redirect user as he is not autorized.
}
?>
Других решений пока нет …