|
|
|
| Возникла необходимость в разграничении прав доступа на сайте.
Идея в следующем. Нужно, чтобы при авторизации опреденных пользователей ссылка была активной, а для других пользователей - нет. Пример кода ниже.
<?
$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="Изменить";
// и так далее все кнопки
}
?>
|
Верен ли такой принцип разграничения прав по группам?
Правильно ли сделано то, что "кнопки" определены как переменные и в зависимости от группы пользователя имеют разное значение? Какие еще есть пути решения этой задачи?
Спасибо. | |
|
|
|
|
|
|
|
для: lomach
(18.01.2007 в 00:20)
| | Я бы посоветовал $_SERVER['PHP_AUTH_USER'] обрабатывать, а то можно не весть что туда запихать. В общем такого способа разграничения и сам придерживаюсь, только еще желательно в вызываемом модуле проверять права, а то может получиться след.ситуация: вот например пользователю было разрешено редактировать что-либо, а потом ему это дело запретили, и вроде бы Изменить - это уже не ссылка для него, а просто текст, но кто ему мешает написать rp.php?d_id=x, где x какой-то индетификатор в системе...в общем понятно? :) | |
|
|
|
|
|
|
|
для: CrazyAdmin
(18.01.2007 в 00:36)
| | Я чисто теоретически представляю, что в массив $_SERVER можно что-то запихать, но как это сделать практически - не представляю. Если есть какие-либо примеры, поделитесь, пожалуйста. | |
|
|
|
|
|
|
|
для: lomach
(18.01.2007 в 10:45)
| | Просто вместо имени пользователя вставить кусок SQL-запроса, который внедрится в существующий и что-нибудь сделает, например, пустит без пароля или с любым паролем.
http://www.softtime.ru/info/articlephp.php?id_article=35 | |
|
|
|
|
|
|
|
для: lomach
(18.01.2007 в 00:20)
| | В принципе верно. Но я бы советовал также отдельно хранить те действия, которые может совершать определенная группа. | |
|
|
|
|
|
|
|
для: Sergey89
(18.01.2007 в 00:39)
| | да, если в системе используются группы :)
вдруг в системе будет максимум 5 пользователей?:) смысл делать группы | |
|
|
|
|
|
|
|
для: CrazyAdmin
(18.01.2007 в 06:12)
| | ну я думаю, что g_id есть ни что иное как Group ID. | |
|
|
|
|
|
|
|
для: Sergey89
(18.01.2007 в 08:18)
| | Да, совершенно верно. g_id это Group ID. | |
|
|
|
|
|
|
|
для: lomach
(18.01.2007 в 10:46)
| | Тогда создайте ещё одну таблицу и опишите там действия, которые может выполнять каждая группа. | |
|
|
|
|
|
|
|
для: Sergey89
(18.01.2007 в 11:54)
| | А можно по подробнее, я честно говоря, не соображу как это сделать. | |
|
|
|
|
|
|
|
для: lomach
(18.01.2007 в 00:20)
| | Нечто подобное уже обсуждалось здесь:
http://softtime.ru/forum/read.php?id_forum=1&id_theme=2757&page=1
У меня задача намного проще: одной группе положено все, другой группе не положено ничего. Приведенный мною выше вариант мне не совсем нравиться, хотелось бы сделать нечто более лучшее. | |
|
|
|