Sql 用户和权限
我想给一些用户某些权限。这是最好的方式吗?我不想让组像:管理员,版主,正常等等。我想能够给一个用户可能访问使新闻发布,另一个创建投票,也许另一个删除投票 我在想这样的表格:Sql 用户和权限,sql,database-design,permissions,Sql,Database Design,Permissions,我想给一些用户某些权限。这是最好的方式吗?我不想让组像:管理员,版主,正常等等。我想能够给一个用户可能访问使新闻发布,另一个创建投票,也许另一个删除投票 我在想这样的表格: CREATE TABLE `users` ( `id` mediumint(8) unsigned NOT NULL, `username` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, ) CREATE TABLE `user_permissions`
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....");
}
另一个问题:我可以做一个“检查代码”的函数,这样我就不需要在每一页上都使用这个丑陋的代码了吗?我对函数还不是很在行
请原谅我的英语,我正在尽力
谢谢更好的方法是使用postgresql语法:
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\u permissions表中检查一行
关于你的第二个问题,故事更长。对于上面的代码,您必须检查用户是否具有执行特定函数的正确权限。我记得的php不是php吗?有一个pear,它是一个有用的代码库。还有一个很大的类存储库,但我记不起它的名字了
编辑:
我发现这个网站:多么难记住…更好的方法是使用postgresql语法:
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\u permissions表中检查一行
关于你的第二个问题,故事更长。对于上面的代码,您必须检查用户是否具有执行特定函数的正确权限。我记得的php不是php吗?有一个pear,它是一个有用的代码库。还有一个很大的类存储库,但我记不起它的名字了
编辑:
我发现这个网站:有多难记住…为什么您不想创建组来分配这些角色?设置完成后,您所要做的就是在角色中添加或删除用户ID。为什么不创建组来分配这些角色?设置完成后,您所要做的就是从角色中添加或删除用户ID。+1并且可以在用户会话开始时将此权限读取到某个类变量中,然后通过检查类属性简单地检查所需的权限。至少这种方式比每次执行select要快。+1和该权限可以在用户会话开始时读入某个类变量,然后通过检查类属性简单地检查所需的权限。至少这种方式比每次执行select要快。