用户和权限

1 sql permissions database-design

我想给一些用户一些权限.这会是最好的方式吗?我不想创建像: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'
 ........
)
Run Code Online (Sandbox Code Playgroud)

在每个页面上我需要检查:

$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....");
}
Run Code Online (Sandbox Code Playgroud)

另一个问题:我可以创建一个'检查代码'的功能,所以我不需要在每个页面上使用这个丑陋的代码吗?(我的功能还不是很好)

请原谅我的英语,我正在尽我所能

谢谢

mg.*_*mg. 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)
)
Run Code Online (Sandbox Code Playgroud)

然后检查users_permissions表中的一行.

对于你的第二个问题,故事更长.对于上面的代码没有办法,您必须检查用户是否具有执行特定功能的权限.为了我能记住的PHP(不是它的PHP,对吗?)有梨是一个有用的代码库.还有一个很大的类库,但我不记得它的名字.

编辑:

我找到了网站:http://www.phpclasses.org/有多难记得......