пользователи и разрешения - PullRequest
       15

пользователи и разрешения

1 голос
/ 23 декабря 2009

Я хочу дать некоторым пользователям определенные разрешения. Будет ли это лучшим способом? Я не хочу создавать такие группы, как: администратор, модератор, обычный и так далее. Я хочу, чтобы один пользователь мог иметь доступ к новостным сообщениям, а другой - для создания опросов, а другой - для удаления опросов.

Я думаю, такие таблицы:

CREATE TABLE `users` (
`id` mediumint(8) unsigned NOT NULL,
`username` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
)

CREATE TABLE `user_permissions` (
`id` mediumint(8) unsigned NOT NULL,
`user_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
`can_post_news` tinyint(1) NOT NULL DEFAULT '0',
`can_delete_topics` tinyint(1) NOT NULL DEFAULT '0'
 ........
)

И на каждой странице мне нужно проверить:

$sql = mysql_query("SELECT * FROM user_permissions WHERE user_id = $loggedinuser");
$row = mysql_fetch_assoc($sql);

if ($row['can_delete_topics'] == 1) {
mysql_query("delete from topics....");
}

Еще один вопрос: могу ли я сделать функцию «контрольного кода», чтобы мне не нужен этот уродливый код на каждой странице? (Я еще не так хорош с функциями)

Извините за мой английский, я стараюсь изо всех сил

Спасибо

1 Ответ

5 голосов
/ 23 декабря 2009

лучший способ (используя синтаксис postgresql sql):

CREATE TABLE users (
    id      SERIAL, -- autoincrementing int
    ...
)

CREATE TABLE permissions (
    id      SERIAL,
    name    VARCHAR(255) NOT NULL,
    ...
)

create table users_permissions (
    id_user REFERENCES users(id),
    id_permission REFERENCES permission(id),
    UNIQUE(id_user, id_permission)
)

, а затем проверьте строку в таблице users_permissions.

для вашего второго вопроса история длиннее. для приведенного выше кода нет способа, вы должны убедиться, что пользователь имеет право на выполнение определенной функции. для того, что я помню, у php (не правда ли, php, верно?) есть груша, которая является библиотекой полезного кода. там также было большое хранилище классов, но я не помню его названия.

Edit:

я нашел сайт: http://www.phpclasses.org/ как трудно запомнить ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...