2016-05-02 6 views
0

Я пытаюсь запретить пользователям получать доступ к страницам, используемым администратором и пользователем-администратором. Сейчас пользователь может перейти на каждую страницу, манипулируя URL-адресом.Проверка роли пользователя для навигации с завершением сеанса

Роли пользователя определяются в базе данных числом от 1-3 до 1, где 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(); 

на каждой странице. Прямо сейчас я не получаю никаких ошибок с этим кодом. Но это также не работает:/

Любая помощь приветствуется!

+0

Вы должны начать сеанс на каждой странице. вы используете этот код 'start_session()' на каждой странице? – Dalvik

ответ

1
<?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. 
} 
?> 
+0

Ничего себе, спасибо за быстрый ответ! Я определенно попробую это решение. Я проверю, работает ли он и вернется, чтобы дать вам зеленый чек! : D –

+0

Извините. Я - глупый парень: P я добавил эти «define (« ADMIN_ACCESS », 1); define ('USER_ADMIN_ACCESS', 2); define ('USER_ACCESS', 3); $ _SESSION ['role'] = ADMIN_ACCESS; // Admin (любой из трех) $ _SESSION ['role'] = USER_ADMIN_ACCESS; // User Admin (любой из трех) $ _SESSION ['role'] = USER_ACCESS; // Пользователь (любой из трех) "в моем шаблоне, а остальное - в файле admin.php. Но я могу перемещаться туда как обычный пользователь. –

+0

Пожалуйста, изучите код правильно и, когда требуется, добавьте точки останова/эхо. Вы решите проблему. – Pupil