на сайте 50 разделов, максимум 100 будет.
Есть таблица пользователей и таблица доступа, в которой прописаны строчки с доступом:
id_razdela, id_polzovatelya, commenti
Тоесть если мне нужно 48 пользователю выдать доступ к 32 разделу сайта, соответственно:
32, 48, bla-bla-bla
Дальше, в управлении пользователем, выкинул таблицу с чекбоксами, на разделы, 50 маленьких чекбоксов, со значением 1 - подключен, 2- не подключен. Массив чекбоксов, у каждого свой номер равный номеру раздела.
В обработчик передаю массив выставленных чекбоксов.
Начинаю обрабатывать, и тут у меня тупняк...
Я делаю так.
1. проверяю есть ли в бд запись о доступе с таким пользователем и номером категории.
2. если нет, то заношу запись.
тут я остановился, задался вопросом: а что если мне нужно убрать доступ с одного раздела?
Следовательно нужно обработчик делать так: сносить нафиг из базы все строчки с доступом на этого пользователя, и заново записывать. Гемороя меньше, но правильно ли это каждый раз при редактировании пользователя, постоянно перетирать права доступа?
Мой обработчик на данный момент:
if (!empty($_POST['cat_access']))
{
$access_mas = $_POST['cat_access'];
foreach($access_mas as $id_to_access => $go)
{
$query_access=mysql_query("SELECT * FROM user_access WHERE user_id ='".$cur_user['id_user']."' and cat ='".$id_to_access."'");cq();
if(!mysql_num_rows($query_access))
{
mysql_query("INSERT into user_access SET user_id='".$cur_user['id_user']."', cat='".$id_to_access."', comment='".$cur_user['surname']." ".$cur_user['name']."'");cq();
}
}
}
Я его естественно не дописал, после добавления нового права доступа, так как фиг знает как лучше сделать.
Спустя 45 минут, 30 секунд (3.02.2012 - 15:35) alexbel2404 написал(а):
Сделай таблицу с группами пользователей, в таблице пользователей добавь поле группы, сделай таблицу, где будет храниться список групп для пользователя. Потом реализуй возможность давать права доступа на группу или отдельно пользователя. Так проще в будущем будет назначать права.
Если не правильно понял вопроса, извиняюсь
Если не правильно понял вопроса, извиняюсь
Спустя 9 минут, 53 секунды (3.02.2012 - 15:45) NitroGenerate написал(а):
Спасибо за мысль, но...
Мне группы не нужны. Ибо у меня около 30 пользователей, у которых разные комбинации доступа к категориям, а категорий 50 и постоянно комбинации меняются.
Выходит что мне нужно будет делать будет группу для каждой комбинации доступа, и выходит, что... ммм... дай подумаю... 9999... комбинаций...
По мне так проще обработчик сделать гибкий...
Есть еще у кого-нибудь идее... хоть что нибудь...
Мне группы не нужны. Ибо у меня около 30 пользователей, у которых разные комбинации доступа к категориям, а категорий 50 и постоянно комбинации меняются.
Выходит что мне нужно будет делать будет группу для каждой комбинации доступа, и выходит, что... ммм... дай подумаю... 9999... комбинаций...
По мне так проще обработчик сделать гибкий...
Есть еще у кого-нибудь идее... хоть что нибудь...
Спустя 16 часов, 24 минуты, 41 секунда (4.02.2012 - 08:09) golovolom написал(а):
$query_access=mysql_query("SELECT * FROM user_access WHERE user_id ='".$cur_user['id_user']."' and cat ='".$id_to_access."'");cq();
if(!mysql_num_rows($query_access)) // если записи с доступом для этого раздела не было
{
// то дабявим запись с доступом
mysql_query("INSERT into user_access SET user_id='".$cur_user['id_user']."', cat='".$id_to_access."', comment='".$cur_user['surname']." ".$cur_user['name']."'");cq();
}
else //запись была
{
if ($go==закрыть доступ)
// удаляем запись с доступом к разделу для данного юзера
mysql_query("DELETE FROM user_access WHERE user_id ='".$cur_user['id_user']."' and cat ='".$id_to_access."'");
}
думаю как то так.. если ты хочешь по своему способу сделать.
Спустя 27 минут, 32 секунды (4.02.2012 - 08:37) inpost написал(а):
Если 30 пользователей, то групп прав не может быть больше 30, где ты цифры взял в 9999...
Пользователей группируют по их правам. Админ: все права, Модератор: часть прав, ньюсмейкер: права на раздел новости, паблик: права только на чтение.
Юзеру назначается его группа.
Пользователей группируют по их правам. Админ: все права, Модератор: часть прав, ньюсмейкер: права на раздел новости, паблик: права только на чтение.
Юзеру назначается его группа.
Спустя 17 минут, 52 секунды (4.02.2012 - 08:55) golovolom написал(а):
Ещё вариант, в id_razdela сделать текстовым и через пробел например заносить ВСЕ номера разделов к которым доступ открыт. Тогда получится всего по 1 записи в таблице. При доступе к разделу проверять содержит ли строчка с номерами разделов данный номер. Если содержит - допустить.
И так же с обновлением доступа:
И так же с обновлением доступа:
<?php
if (!empty($_POST['cat_access']))
{
$access_mas = $_POST['cat_access'];
foreach($access_mas as $id_to_access => $go)
{
if ($go) // открыть доступ к разделу
// добавить к полю пробел+номер раздела+пробел, если такого в записи ещё нет
mysql_query("UPDATE user_access SET cat = CONCAT(cat, ' ".$id_to_access." ') WHERE user_id ='".$cur_user['id_user']."' AND !(cat LIKE ' ".$id_to_access." '))";
else // если значение для данного раздела "запретить"
//вырежем из строчки с номерами номер данного раздела, чем запретим доступ(вырезаем так же с двумя обрамляющими пробелами(илидругими разделителями))
mysql_query("UPDATE user_access SET cat = REPLACE(cat, ' ".$id_to_access." ', '') WHERE user_id ='".$cur_user['id_user']."' AND !(cat LIKE ' ".$id_to_access." '))";
// вообще строчка должна выглядеть так разделитель номер разделитель разделитель номер разделитель и т.д. тогда нормально такой способ будет робить
}
}
Спустя 1 минута, 52 секунды (4.02.2012 - 08:57) golovolom написал(а):
Цитата (inpost @ 4.02.2012 - 05:37) |
Если 30 пользователей, то групп прав не может быть больше 30, где ты цифры взял в 9999... Пользователей группируют по их правам. Админ: все права, Модератор: часть прав, ньюсмейкер: права на раздел новости, паблик: права только на чтение. Юзеру назначается его группа. |
он это взял из количества разделов и различных вариантов "запрещен раздел"- "не запрещён" для одного конкретного пользователя, вроде так. Он хочет пользователю для каждого раздела допуск или запрет выставить, в итоге для каждого юзера доступы запреты разные, а разделов дофига. нет не только деление на модера админа и тд. тут ещё и каждый пользователь на каждый раздел может иметь или не иметь право, ппц какой