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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
tramX
Отправлено: 16 Июня, 2010 - 14:37:12
Post Id


Новичок


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


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




Здравствуйте. Есть группы пользователей и несколько администраторов, как распределить права доступа между администраторами.
Group1, Group2, Group3, Group4, Group5 – superadmin

Group1, Group2, Group3 – admin

Group1 - admingroup1
 
 Top
EuGen Администратор
Отправлено: 16 Июня, 2010 - 16:32:01
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Ничего не понял, попробуйте еще раз


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
tramX
Отправлено: 16 Июня, 2010 - 16:45:52
Post Id


Новичок


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


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




Cушествует например 10 пользователе.
Us1
Us2
Us3
Us4
Принадлежат к группе group1
Us5
Us6
Us7
Us8
Принадлежат к группе group2
Us9
Us10
Принадлежат к группе group3
Есть три администратора.
1. Superadmin – ему нужна дать все права, чтобы он мог видеть пользователей из всех групп.
2. admin – ему нужно дать доступ только к пользователям из group2, group3.
3. admingroup3 – дать доступ только к пользователям из группы group3
 
 Top
Jlblcblu
Отправлено: 17 Июня, 2010 - 00:13:57
Post Id



Новичок


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


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




 
 Top
JustUserR
Отправлено: 17 Июня, 2010 - 11:29:44
Post Id



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


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


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




tramX пишет:
Есть группы пользователей и несколько администраторов, как распределить права доступа между администраторами.
Если вы имеете в виду SQL-пользователей то это не такая простая задача - дело в том что по умолчанию не предусмотрено каскадное выставление прав пользователей и управление ими - то есть если определенный пользователь имеет права GRANT/REVOKE то он может устанавливать любые права любом пользователям
Как вариаент обхода можно создать SQL-функцмю принадлежащую административному пользователю - которую могут изменять только администраторы и выполнять может каждый - и внутрии нее проверяется текущий пользователь и с помощью таблицы mysql ему могут выдаваться определенные поля


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


Новичок


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


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




Я вот как подумал. При создании группы в таблицу group в поле accetp заносим id администратора которому разрешён доступ к группе.
Таблица будет такого вида
id name accept
1 group1 1
2 group2 1,2
3 group3 1,2,3

С помощью сессии есть id администратора
При выводе списка групп на которые есть права, формируется запрос
SELECT name FROM group WHERE accept=$id;
Только не получаю вывода там где запятые в поле accept. Может в MySQL есть какой то оператор позволяющийделать такие выборки?
 
 Top
JustUserR
Отправлено: 18 Июня, 2010 - 13:03:37
Post Id



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


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


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




tramX пишет:
Только не получаю вывода там где запятые в поле accept
Выражение с запятиыми является в вашем случае обычной сторокой - и поэтому для проверки с помощью SQL-средств можно в общем случае использовать оператор LIKE - только учтите что он ищет подстроки и поэтому при поиске группы 2 к примеру группа 12 также будет учтена По этой причине можете сделать специальные ограничители - например данные в поле начинаются и занкачинаются специальным символом типа X,1,2,3,X - и тогда можнл делать точную проверку с помощью LIKE ,$group, то есть с указанем полной подстроки


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


Новичок


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


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




С выборкой разобрался. Как добавлять новые значения?
 
 Top
JustUserR
Отправлено: 04 Июля, 2010 - 02:30:40
Post Id



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


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


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




tramX пишет:
С выборкой разобрался. Как добавлять новые значения?
Если вы используете приведенную выше структуры данных для хранения набора значений прав доступа - то можете реализовать обновление соответствующего SQL-поля с использованием встроенных строковых функций В частности вы сначала выбираете нужную строку по ключевому полю и считываете список прав доступа - после чего функцией SUBSTR выбираете значение до последнего ,X и конкатенируете туда новое значение - после чего записываете измененное поле в UPDATE-запросе Аналогичным образом выполняется и удалением прав доступа из соответствующего списка


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


Новичок


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


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




А пример можно?
 
 Top
JustUserR
Отправлено: 17 Августа, 2010 - 23:37:40
Post Id



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


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


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




tramX пишет:
А пример можно?
Для добавления информации о новых пользователях в группе с их правами и внутренними прявязками в вашу структуру данных - можно выполнить SQL-запрос который будет запрашить строку заданной группы и модифицировать инфорацию о входящих в нее пользователях путем модификации строки и расстановки ограничителей - при этом использовать дополнительное шифрование или экранироване не требуется так как все идентификаторы представляют собой числовые значения
Таким образом для добавления нового пользователя в группу можно использовать примерно такой SQL-запрос - в нем необходимо указать значение CHANGE_ID как инентификаор изменямой группы и NEW_VALUE как новая добавляемая привелегия
CODE (text):
скопировать код в буфер обмена
  1. UPDATE groups SET accept=SUBSTR(accept,0,(STELEN(accept)-1))+"NEW_VALUE"+",X" WHERE ID="CHANGE_ID"


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


Новичок


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


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




Я запутался. Есть таблица users, в которой есть поле admins. В этом поле должны перечисляться администраторы. Мне нужно добавлять администраторов в это поле. Но перед тем как добавить нужно сделать проверку есть ли такой администратор или нет. Как это реализовать?
 
 Top
Uchkuma
Отправлено: 18 Августа, 2010 - 17:28:21
Post Id



Участник


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


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




tramX, проверку можно сделать дополнительным или вложенным запросом. Если хотите, чтобы по полю 'admins' в бд гарантированно не было дубликатов, присвойте данному полю индекс типа 'UNIQUE'.
 
 Top
JustUserR
Отправлено: 18 Августа, 2010 - 22:10:34
Post Id



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


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


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




tramX Для проверки наличия администратора с некоторым идентификатором в указаной группе можно использовать вложенный запрос - конкретно вы осуществляете выборку SELECT по ранее указанное схеме с целью получить число строк с помощью оператора COUNT которые соответствуют требуемому условию - и далее вы можете сделать проверку значения возвращенного внутренним запросом на равентсво нулю и в зависимости от этого выполнять добавление


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


Новичок


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


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




Можно же и без COUNT ?
$adm = mysql_query("SELECT id FROM users WHERE admins LIKE '%petya%'");


if (mysql_num_rows($adm) > 0)

(Отредактировано автором: 18 Августа, 2010 - 22:27:41)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB