用户和权限

时间:2009-12-23 18:51:59

标签: sql database-design permissions

我想为某些用户授予一定的权限。这会是最好的方式吗?我不想创建像:admin,moderator,normal等组。我希望能够让一个用户可以访问制作新闻帖子,另一个用户创建民意调查,也许还有另一个删除民意调查。

我在想这样的表:

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 个答案:

答案 0 :(得分:5)

更好的方法是(使用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,对吗?)有梨是一个有用的代码库。还有一个很大的类库,但我不记得它的名字。

修改

我发现网站:http://www.phpclasses.org/有多难记住...