у меня сейчас права доступа беруться из базы и пишутся в сессию ну и в переменную $access
например 1 - админ; 2-модератор;3-редактор.
так вот, чтоб раставить на страницах права мне надо сделать кучу проверок такого вида:
if ($access == 1 || $access == 2) {
echo "Редактировать пользователей";
}
if ($access == 1 || $access == 2 || $access == 3) {
echo "Редактировать новости";
}
//В том числе и вложеные бывают
if ($access == 1 || $access == 2 || $access == 3) {
echo "Заказать";
if ($access != 3) {
echo "Отменить заказ";
}}
Чето меня эта конструкция как-то напрягает, особенно когда теперь достаточно сильно завязка на права идет. Темпаче чтоб мне допустим в одном месте вывести сылку, а в другом какой-то контент приходится писать одни и теже проверки несколько раз.
- Как можно упросить, да и вообще как грамотно сделать?
Еще вопрос я слышал что в ООП есть такое понятие как наследование, теоритически можно получается же задать сначала самые маленькие права (права в плане набор сылок например и функционала) редактора и наследовать их до администратора?
Спустя 15 часов, 6 минут, 15 секунд (22.02.2011 - 12:45) Renden написал(а):
Омг, меня что игнорят на форуме?, вроде никого не обижал
Вопрос больше теоритический как кто делает реализацию прав..
Вопрос больше теоритический как кто делает реализацию прав..
Спустя 7 минут, 29 секунд (22.02.2011 - 12:52) Семён написал(а):
В модуле например держать id-access-a, который должен быть в списке прав пользователя.
К примеру:
news. access_keys: 2,3,4,5
У пользователя Vasya в списке прав должен присутствовать keys: 1,2,3,4,5,6
Для проверки доступа юзать какую-нибудь функцию $this->checkAccess(''2,3,4,5");
К примеру:
news. access_keys: 2,3,4,5
У пользователя Vasya в списке прав должен присутствовать keys: 1,2,3,4,5,6
Для проверки доступа юзать какую-нибудь функцию $this->checkAccess(''2,3,4,5");
Спустя 1 минута, 56 секунд (22.02.2011 - 12:54) Snus написал(а):
Renden
С легкостью можно заменить на
if ($access == 1 || $access == 2 || $access == 3) {
С легкостью можно заменить на
if($access <= 3){
Спустя 3 минуты, 53 секунды (22.02.2011 - 12:58) Renden написал(а):
Семён
Проверка то будет в функции, а на странице всеравно придется делать проверку if подругому никак?
Snus
Ну это я расписал чтоб наглядно было
Проверка то будет в функции, а на странице всеравно придется делать проверку if подругому никак?
Snus
Ну это я расписал чтоб наглядно было
Спустя 39 секунд (22.02.2011 - 12:59) Snus написал(а):
Renden
А так не наглядно? :D
А так не наглядно? :D
if($access <= 3){
Спустя 2 минуты, 21 секунда (22.02.2011 - 13:01) Snus написал(а):
Renden
switch ($access) {
case '2':
echo 'Редактировать пользователей';
break;
case '3':
echo 'Редактировать новости';
break;
default:
echo 'Юзверь, пшлнх :)';
break;
}
Спустя 4 минуты, 36 секунд (22.02.2011 - 13:06) Renden написал(а):
Snus
echo 'Юзверь, пшлнх ';
Ггыгы)
Да эту конструкцию я знаю, у мня вопрос в том что если мне допутим надо в 1 месте вывести только сылки, а в другом допустим каку-ю то часть контента, то я пишу if (или swith) несколько раз, да и в каждом файлике типа index.php, pages.php.
Как люди загоняют все права в 1 функцию, класс или еще что, чтоб не плодить код?
echo 'Юзверь, пшлнх ';
Ггыгы)
Да эту конструкцию я знаю, у мня вопрос в том что если мне допутим надо в 1 месте вывести только сылки, а в другом допустим каку-ю то часть контента, то я пишу if (или swith) несколько раз, да и в каждом файлике типа index.php, pages.php.
Как люди загоняют все права в 1 функцию, класс или еще что, чтоб не плодить код?
Спустя 4 минуты, 58 секунд (22.02.2011 - 13:11) Snus написал(а):
Renden
Ну напиши в отдельный файл acc.php и иклудь везде
Ну напиши в отдельный файл acc.php и иклудь везде
Спустя 9 минут, 19 секунд (22.02.2011 - 13:20) Renden написал(а):
Snus
Ты несовсем понял, вопрос больше по структуре у меня так примерно выглядит:
И так на практически на каждой странице (ну естесно разные сылки, разный контент) но этот вид смачно тянет на быдлокод, а мне порабы уже как-то учиться чтоль, потому и спрашиваю знатоков как вот они реализовывают..
Ты несовсем понял, вопрос больше по структуре у меня так примерно выглядит:
include('head.php');
if($access == 1){
//кучка контента которая показывается в head (сылки, напоминалки там)
}
if($access == 2){
//другая кучка контента которая показывается в head (сылки, напоминалки там)
}
echo "</head><body>";
if($access == 1){
//Показываю там фигнюшки для редактирования меню, пользователей и тп
}
тут код который для всех
if($access <= 3){
//Показываю n количество кода для редактирование новостей
}
еще код для всех и тп
include('foot.php');
И так на практически на каждой странице (ну естесно разные сылки, разный контент) но этот вид смачно тянет на быдлокод, а мне порабы уже как-то учиться чтоль, потому и спрашиваю знатоков как вот они реализовывают..