php的角色权限控制数据库表设如何设计? php的角色权限控制数据库表设如何设计?是个怎样的大概思路 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 另一种方法是参数表,适用于固定参数,只判断bool的例如用户 读 写 执行abc Y Y Ycba Y N Nzzz Y Y N那么abc=7(二进制 111)cba=1(二进制 001)zzz=3(二进制 011)例如论坛,权限都是固定的参数值,每个人区别只是 有/无 某个权限*要注意的参数是64位/32位的问题——避免溢出 我设计的一个acl模块有4张表,还有一张记录用户的表与其中一张关联//资源表acl_resource//角色表acl_role//权限表acl_weight//某角色对于某资源拥有何种权限表acl_control//用户信息表user资源表主要存储的是模块,比如拿bbs来说:板块1,板块2...并且记录此资源拥有多少种权限。角色表:里面存储各种角色:管理员,超级版主,版主,注册用户,访客...权限表:发帖、回帖、删帖、修改贴、移动帖子...控制表:记录x角色对于x资源有x权限。用户表:记录用户信息,同时记录其隶属的角色id。小技巧。记录权限信息时,可以用类似linux权限的方法。比如发帖权限值=1、删帖权限值=2、修改权限值=4、移动=8。假如资源a拥有删帖、移动贴的权限,记为:1+8=9。想反向求出9代表哪些权限可以使用5%权限值是否=权限值的方法。即9&1==1,就拥有发帖权限,9&2!=2没有删帖权限,9&4!=4没有修改权限,9&8==8有移动贴权限。这样就不用记录一个1,8的字符串了。存储方便,计算效率也高。但缺陷是不能超过你cpu的位数。32位的机器上,最多有32个值,64位机器最多有64个值。但一般来说这足够了。 和我说的原理基本相同的,都是位运算,1/2/4/8……分别是2的0/1/2/3……次方请参考php位运算章节补答你的问题当系统是32位时,如果你有33个权限设置,且最后一个是yes(二进制最高位=1),就会溢出所以32位要设置多于32个权限,不能直接用位运算,需要取巧方法…… 页面加载过程中,提示用户网页正在加载中,怎么做呢? php+xml(php怎么改变xml中的值) 如何只取字符串里面的数值类字符 急 有段php看不明白 求稳定函数或思路:移除string中不润许的html tags 分页显示 不得不提的一个问题! 如何在网页中实现???(请进,问题急) 关于读文本内容,进者有分。。。 在那儿可以找到php在linux下的安装文件(.rpm) php上传图片 php 去掉字符串重复的值.???
用户 读 写 执行
abc Y Y Y
cba Y N N
zzz Y Y N那么
abc=7(二进制 111)
cba=1(二进制 001)
zzz=3(二进制 011)例如论坛,权限都是固定的参数值,每个人区别只是 有/无 某个权限*要注意的参数是64位/32位的问题——避免溢出
acl_resource
//角色表
acl_role
//权限表
acl_weight
//某角色对于某资源拥有何种权限表
acl_control//用户信息表
user资源表主要存储的是模块,比如拿bbs来说:板块1,板块2...并且记录此资源拥有多少种权限。
角色表:里面存储各种角色:管理员,超级版主,版主,注册用户,访客...
权限表:发帖、回帖、删帖、修改贴、移动帖子...
控制表:记录x角色对于x资源有x权限。
用户表:记录用户信息,同时记录其隶属的角色id。小技巧。记录权限信息时,可以用类似linux权限的方法。
比如发帖权限值=1、删帖权限值=2、修改权限值=4、移动=8。
假如资源a拥有删帖、移动贴的权限,记为:1+8=9。想反向求出9代表哪些权限可以使用5%权限值是否=权限值的方法。即9&1==1,就拥有发帖权限,9&2!=2没有删帖权限,9&4!=4没有修改权限,9&8==8有移动贴权限。这样就不用记录一个1,8的字符串了。存储方便,计算效率也高。但缺陷是不能超过你cpu的位数。
32位的机器上,最多有32个值,64位机器最多有64个值。但一般来说这足够了。
请参考php位运算章节补答你的问题
当系统是32位时,如果你有33个权限设置,且最后一个是yes(二进制最高位=1),就会溢出
所以32位要设置多于32个权限,不能直接用位运算,需要取巧方法……