2013-11-27 4 views
1

У меня есть несколько страниц в PHP, в основном один является Логин, который устанавливает сеансы (в том числе разрешения пользователя)Настройка уровней разрешений на PHP

так в моей базе данных у меня есть столбцы имя пользователя, пароль, пользователь, администратор, специальные и она устанавливает их в сессиях

на каждой странице у меня есть следующий код:

if($_SESSION["special"] != 'yes') 
{ 
echo 'Access Denied!'; 
exit(); 
} 

так будет остановить все, от бега.

Все мои пользователи «Администратора» не имеют «специального» уровня пользователя, так как они должны просто переопределить это и иметь доступ ко всему, но поскольку у пользователей-администраторов нет «специального» разрешения пользователя, код выше работает и останавливает пользователя от просмотра страницы.

Как я могу заставить пользователей «admin» переопределить это вообще?

+0

Кажется простой '' || (или) структуры для меня ... –

ответ

2

Если вы меня поняли правильно, у вас возникли следующие ситуации: у обычных пользователей может быть или не быть special == yes, и поэтому получите специальный доступ. Админы имеют special != yes, но все равно должны получить доступ?

if ($_SESSION['user'] == 'yes' && $_SESSION['special'] != 'yes') { 
    echo 'Access Denied!'; 
    exit; 
} 

Теперь будут представлены только те лица, которые являются пользователями и не имеют специального доступа. Админы и пользователи со специальным доступом могут получить доступ к сайту, как будто никакой проверки не было.

В качестве альтернативы вы можете написать

if ($_SESSION['admin'] != 'yes' && $_SESSION['special'] != 'yes') { 
    echo 'Access Denied!'; 
    exit; 
} 
+0

Каков наилучший способ установить эти параметры в базе данных? мне нужно будет иметь каждое имя страницы (directrory1/test_page.php), а затем столбец для каждого уровня доступа? – charlie

+0

Вам нужно будет уточнить, что именно вы пытаетесь достичь (в своем вопросе), прежде чем я смогу ответить на это. Также взгляните на другие пользовательские системы, эта проблема, вероятно, была решена несколько раз (даже если не для вашего индивидуального случая, вам может понадобиться вдохновение) – kero

0

Ваши пользователи 'Admin' должен иметь какой-либо другой параметр, определяющий их в качестве администратора, поэтому проверьте, что:

if(($_SESSION["special"] != 'yes')||(!IS_ADMIN)) 
{ 
echo 'Access Denied!'; 
exit(); 
} 
Смежные вопросы