Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Разграничение прав доступа
 
 автор: lomach   (18.01.2007 в 00:20)   письмо автору
 
 

Возникла необходимость в разграничении прав доступа на сайте.
Идея в следующем. Нужно, чтобы при авторизации опреденных пользователей ссылка была активной, а для других пользователей - нет. Пример кода ниже.

<?
$query
="SELECT `g_id` FROM `users` WHERE `user_name` = '"$_SERVER['PHP_AUTH_USER'] ."'";
$result=mysql_query($query);
$f=mysql_fetch_array($result);
$gid=$f['g_id'];
if(
$gid == 1){
$b1="<a href='rp.php?d_id=".$d_id."'>Изменить</a>";
// и так далее все кнопки
}
if(
$gid == 2){
$d_repair="Изменить";
// и так далее все кнопки
}
?>

Верен ли такой принцип разграничения прав по группам?
Правильно ли сделано то, что "кнопки" определены как переменные и в зависимости от группы пользователя имеют разное значение? Какие еще есть пути решения этой задачи?
Спасибо.

   
 
 автор: CrazyAdmin   (18.01.2007 в 00:36)   письмо автору
 
   для: lomach   (18.01.2007 в 00:20)
 

Я бы посоветовал $_SERVER['PHP_AUTH_USER'] обрабатывать, а то можно не весть что туда запихать. В общем такого способа разграничения и сам придерживаюсь, только еще желательно в вызываемом модуле проверять права, а то может получиться след.ситуация: вот например пользователю было разрешено редактировать что-либо, а потом ему это дело запретили, и вроде бы Изменить - это уже не ссылка для него, а просто текст, но кто ему мешает написать rp.php?d_id=x, где x какой-то индетификатор в системе...в общем понятно? :)

   
 
 автор: lomach   (18.01.2007 в 10:45)   письмо автору
 
   для: CrazyAdmin   (18.01.2007 в 00:36)
 

Я чисто теоретически представляю, что в массив $_SERVER можно что-то запихать, но как это сделать практически - не представляю. Если есть какие-либо примеры, поделитесь, пожалуйста.

   
 
 автор: cheops   (18.01.2007 в 12:54)   письмо автору
 
   для: lomach   (18.01.2007 в 10:45)
 

Просто вместо имени пользователя вставить кусок SQL-запроса, который внедрится в существующий и что-нибудь сделает, например, пустит без пароля или с любым паролем.

http://www.softtime.ru/info/articlephp.php?id_article=35

   
 
 автор: Sergey89   (18.01.2007 в 00:39)   письмо автору
 
   для: lomach   (18.01.2007 в 00:20)
 

В принципе верно. Но я бы советовал также отдельно хранить те действия, которые может совершать определенная группа.

   
 
 автор: CrazyAdmin   (18.01.2007 в 06:12)   письмо автору
 
   для: Sergey89   (18.01.2007 в 00:39)
 

да, если в системе используются группы :)
вдруг в системе будет максимум 5 пользователей?:) смысл делать группы

   
 
 автор: Sergey89   (18.01.2007 в 08:18)   письмо автору
 
   для: CrazyAdmin   (18.01.2007 в 06:12)
 

ну я думаю, что g_id есть ни что иное как Group ID.

   
 
 автор: lomach   (18.01.2007 в 10:46)   письмо автору
 
   для: Sergey89   (18.01.2007 в 08:18)
 

Да, совершенно верно. g_id это Group ID.

   
 
 автор: Sergey89   (18.01.2007 в 11:54)   письмо автору
 
   для: lomach   (18.01.2007 в 10:46)
 

Тогда создайте ещё одну таблицу и опишите там действия, которые может выполнять каждая группа.

   
 
 автор: lomach   (18.01.2007 в 12:49)   письмо автору
 
   для: Sergey89   (18.01.2007 в 11:54)
 

А можно по подробнее, я честно говоря, не соображу как это сделать.

   
 
 автор: lomach   (19.01.2007 в 15:07)   письмо автору
 
   для: lomach   (18.01.2007 в 00:20)
 

Нечто подобное уже обсуждалось здесь:

http://softtime.ru/forum/read.php?id_forum=1&id_theme=2757&page=1

У меня задача намного проще: одной группе положено все, другой группе не положено ничего. Приведенный мною выше вариант мне не совсем нравиться, хотелось бы сделать нечто более лучшее.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования