Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Распределение прав доступа

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Jlblcblu
Отправлено: 30 Марта, 2010 - 15:46:14
Post Id



Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




Добрый день, подсел на Ваш форум, почитал много интересного) И вот появился вопрос:

Нужно организовать разделение прав у нескольких пользователей.
А теперь подробней что да как:

Допустим у нас есть 3 пользователя:

Admin - можeт все
User_1 - может смотреть
User_2 - может смотреть, редактировать, удалять.
User_3 - ему доступ запрещен

Естественно админ может проставить кому что можно.

Каким образом лучше и правильней все это сделать? Буду благодарен за любую помощь, отвечу на дополнительные вопросы)

З.Ы.
Поиском пользовался, но то, что я нашел - не очень понравилось.
 
 Top
lodar
Отправлено: 30 Марта, 2010 - 15:49:35
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Авг. 2009  


Помог: 0 раз(а)




Jlblcblu пишет:
Добрый день, подсел на Ваш форум, почитал много интересного) И вот появился вопрос:

Нужно организовать разделение прав у нескольких пользователей.
А теперь подробней что да как:

Допустим у нас есть 3 пользователя:

Admin - можeт все
User_1 - может смотреть
User_2 - может смотреть, редактировать, удалять.
User_3 - ему доступ запрещен

Естественно админ может проставить кому что можно.

Каким образом лучше и правильней все это сделать? Буду благодарен за любую помощь, отвечу на дополнительные вопросы)

З.Ы.
Поиском пользовался, но то, что я нашел - не очень понравилось.

Лучше всего создать группы пользователей. Таким образом на будущее возможно расширять права не одного, а целой группы. Если использовать БД, то каждой группе назначай уникальный ид и соответственно проверку через ид на права.
 
 Top
Тоха
Отправлено: 30 Марта, 2010 - 15:50:02
Post Id



Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Март 2010  
Откуда: Орел, Россия


Помог: 0 раз(а)




всё зависит от того, какой стиль вы используете при программировании. Ну и от контента и направленности сайта конечно тоже. Иногда удобнее хранить настройки в конфигурационном файле, но чаще в отдельной таблице БД.
 
 Top
Stierus Супермодератор
Отправлено: 30 Марта, 2010 - 15:54:10
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




1. Права назначать не пользователям, а группам - обязательно (пользователей относить к этим группам, даже если пока в 1 группе всего 1 пользователь)
2. Если у вас все делается в ООП-стиле - то в классе можете сделать конфиг-массив, в котором указать, какую функцию какие группы могут выполнять, ну а в самих функциях делать проверку этих прав (так же поставить права по умолчанию)
 
My status
 Top
Jlblcblu
Отправлено: 30 Марта, 2010 - 15:56:08
Post Id



Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




lodar пишет:
Лучше всего создать группы пользователей. Таким образом на будущее возможно расширять права не одного, а целой группы. Если использовать БД, то каждой группе назначай уникальный ид и соответственно проверку через ид на права.


Хм.. С группами хорошая идея. Действительно логичней будет.
Использую MySQL.

И вот с этими проверками на права никак не могу понять что да как)
Допустим логинится кто-то, получает $_SESSION['access']... и тут хранить некие показатели для каждой страницы? если их20-30.. можно и запутаться что куда..

Вот тут приведен пример, но он как-то не очень: _http://ru-sait.ru/publ/18-1-0-262_
 
 Top
Тоха
Отправлено: 30 Марта, 2010 - 16:00:44
Post Id



Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Март 2010  
Откуда: Орел, Россия


Помог: 0 раз(а)




Jlblcblu пишет:

И вот с этими проверками на права никак не могу понять что да как)
Допустим логинится кто-то, получает $_SESSION['access']... и тут хранить некие показатели для каждой страницы? если их20-30.. можно и запутаться что куда..

Вот тут приведен пример, но он как-то не очень: _http://ru-sait.ru/publ/18-1-0-262_


Не совсем так, проще будет:
PHP:
скопировать код в буфер обмена
  1. $_SESSION['access'] = 10; // Для администратора
  2. $_SESSION['access'] = 20; // Для пользователя
  3. $_SESSION['access'] = 50; // Для гостей

Таким образом блок кода, который нужно выводить только для админов и пользователей будет выглядеть так:
PHP:
скопировать код в буфер обмена
  1. if($_SESSION['access'] <= 20) {
  2.    // Do something
  3. }

и так далее...
 
 Top
markus4
Отправлено: 30 Марта, 2010 - 16:04:11
Post Id



Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Создать столбец TYNINT (1) // Уровень доступа, при авторизации в сессию.


-----
Нет вокруг ничего кроме бесконечного журчания опкодов вселенной...
 
 Top
JustUserR
Отправлено: 30 Марта, 2010 - 16:16:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Jlblcblu Можно конечно использовать группы пользователей с набором прав для них и для каждого пользователя в таблице БД держать такую запись - а вот можно и сделать побитовое сложение прав - например 1=читать 2=добавлять 4=редактировать 8=удалять и тд В таком случае сумма этих прав дает определенное число которое явно отражает права конкретного пользователя


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Jlblcblu
Отправлено: 30 Марта, 2010 - 16:45:57
Post Id



Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




Сделал группы. Но опять все не столь радужно. Попробую сформулировать чуть иначе и показать на примере конкретно в чем нужна помощь.

Имеем:
Something.php c такой таблицей
+--+----------+----+------+
| 1 | String_1 |edit |delete|
| 2 | String_2 |edit |delete|
+--+----------+----+------+

Add_something.php c некоторой информацией.

Таблица MySQL - "Access":
+-id-+-group_name-+-access-+
| 1 | Admins |77 |
| 2 | Users |12 |
| 3 | Guests |00 |
+-----+----------------+---------+
И что у нас выходит.
Мы авторизумся и, допустим, получаем права на КАЖДУЮ страницу.
Т.е. после авторизации в $_session['access']="77" за админа, "12" за user`а и т.д.

Дальше мы берем циферку под каждую страничку $_session['access'][0] (something.php) и $_session['access'][1] (dd_something.php).

И при формировании страницы пишем:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. if($_session['access'][0]!="0"){
  3.      if($_session['access'][0]=="1" || $_session['access'][0]=="3" || $_session['access'][0]=="5" ||$_session['access'][0]=="7") echo 'delete';
  4. }else{echo "Доступ запрещен!";}
  5.  

Используя такие правила:

0 - ничего нельзя
1 - разрешено удаление
2 - разрешено редактирование
3 - разрешено редактирование и удаление
4 - разрешен просмотр
5 - разрешены просмотр и удаление
6 - разрешены просмотр и редактирование
7 - разрешено все

И все 30 страничек изрезать такими вот проверками) поперепутав какая по счету циферка относится к какой странице в $_SESSION['access']="12312312356124375612473";

Вот как то так я себе это видел) может глупо) что скажете на это?
 
 Top
JustUserR
Отправлено: 30 Марта, 2010 - 17:33:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Jlblcblu пишет:
Вот как то так я себе это видел) может глупо) что скажете на это?
Это по сути расширение linux-овского разграничения прав ползователя и группы и всех остальных на большее число параметров - кроме того если у вас будет проверяющая функция которая смотрит разршено ли то или иное действие для пользователя то проблем с позицией цифры не будет Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
jfr
Отправлено: 30 Марта, 2010 - 20:44:08
Post Id



Посетитель


Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010  
Откуда: Таджикистан, Худжанд


Помог: 0 раз(а)

[+]


http://newscript[dot]ru есть готовые скрипты по этой теме...

(Отредактировано автором: 30 Марта, 2010 - 22:36:27)

 
 Top
JustUserR
Отправлено: 31 Марта, 2010 - 09:11:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Jlblcblu Может быть также найдете что-то полезное отсюда http://www[dot]vanta[dot]ru/script/catal[dot][dot][dot]at=50&clas=0


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Jlblcblu
Отправлено: 31 Марта, 2010 - 14:30:30
Post Id



Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




Спасибо за ссылки. Там много всего. Просматриваю.
 
 Top
JustUserR
Отправлено: 31 Марта, 2010 - 16:31:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Jlblcblu пишет:
Спасибо за ссылки. Там много всего. Просматриваю.
Пожалуйста! Вообще есть много таких сайтов с PHP-скриптами - смотрите на http://www[dot]vanta[dot]ru/ и http://www[dot]hotscripts[dot]com/ хотя есть и множество других Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Toshak
Отправлено: 01 Ноября, 2010 - 20:14:14
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Вот моя мысль....Но не сомвсем для пользователей....Просто разограничить права по модулям....
Допустим изменять/удалять/редактировать информ в модуле сможет только ограниченная группа....
Просто есть таблица moduls в ней названия модулей и т.д. ,а так же access,в ней через какойто опредленый символ ,условный, допустим буду записывать те группы которые могут монипулировать этим модулем,допустим "admin|moder|group2" ,далее я извлекаю эту инфу,разбиваю в массив допустим $mod_access , далее... У пользователя есть свойство group ,в нем храниться к какой группе пользователей относиться юзер. При заходе в админку , я сравниваю группу пользователя и доступность его монипулировать модулем,и вывожу только те модули к которым у него есть доступ.
____
Пока тока думки,но думаю америку не открыл.Пока что реализовать не пробывал.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB