欢迎光临
我们一直在努力

用户权力详解-PHP教程,其它文章

建站超值云服务器,限时71元/月

有耐心就看完(还是算法重要)

用户初始权值:enable = 0;

假如一个用户有第一项权力select,则用户权值:enable = enable + 1;

假如一个用户有第二项权力insert,则用户权值:enable = enable + 2;

假如一个用户有第三项权力update,则用户权值:enable = enable + 4;

假如一个用户有第四项权力delete,则用户权值:enable = enable + 8;

为什么依次+1、+2、+4、+8,而不是+1、+2、+3、+4呢?

假如是+1、+2、+3、+4:

假如一个用户有第一项权力select,则用户权值:enable = enable + 1;

假如一个用户有第二项权力insert,则用户权值:enable = enable + 2;

假如一个用户有第三项权力update,则用户权值:enable = enable + 3;

假如一个用户有第四项权力delete,则用户权值:enable = enable + 4;

那么当用户权值:enable = 3时,你就无法判断用户到底是同时拥有

第一项权力select和第二项权力insert两项权利,还是仅拥有第三项权力update,

前一种权值算法就可以避免这种情况。

但是当采用前一种权值算法时,怎样由用户的权值enable快速知道用户拥有哪几项权

力呢?假如是用户权值enable = 5,用户拥有第一项权力select和第三项权力update,

注意不拥有第二项权力insert。

下面我将用户权力列表:

权力 拥有权力用户的权值enable

selectitem:( 1, 3, 5, 7, 9, 11, 13, 15 )

insertitem:( 2, 3, 6, 7, 10, 11, 14, 15 )

updateitem:( 4, 5, 6, 7, 12, 13, 14, 15 )

deleteitem:( 8, 9, 10, 11, 12, 13, 14, 15 )

可见并不是权值enable大的用户就拥有“更多”的权力,

假如 :用户权值enable = 3,用户拥有第一项权力(select)和第二项权力(insert),共两项权利,

用户权值enable = 4,用户拥有第三项权力(update),仅一项权利。

仔细观察“用户权力列表”:

selectitem:( 1, 3, 5, 7, 9, 11, 13, 15 ): 1 = 0 + 2 的0次幂;3 = 2 的1次幂 + 2 的0次幂;5 = 2 的2次幂 + 2 的0次幂;

insertitem:( 2, 3, 6, 7, 10, 11, 14, 15 ): 2 = 0 + 2 的1次幂;3 = 2 的0次幂 + 2 的1次幂;6 = 2 的2次幂 + 2 的1次幂;

updateitem:( 4, 5, 6, 7, 12, 13, 14, 15 ): 4 = 0 + 2 的2次幂;5 = 2 的0次幂 + 2 的2次幂;6 = 2 的2次幂 + 2 的2次幂;

deleteitem:( 8, 9, 10, 11, 12, 13, 14, 15 ):8 = 0 + 2 的3次幂;9 = 2 的0次幂 + 2 的3次幂 10 = 2 的1次幂 + 2 的3次幂;

规律总结如下:

拥有第一项权力select用户的权值:enable = ? + 2 的0次幂;(其中?亦必须拆成2 的n次幂相加的情况)

拥有第二项权力insert用户的权值:enable = ? + 2 的1次幂;(其中?亦必须拆成2 的n次幂相加的情况)

拥有第三项权力update用户的权值:enable = ? + 2 的2次幂;(其中?亦必须拆成2 的n次幂相加的情况)

拥有第四项权力delete用户的权值:enable = ? + 2 的3次幂;(其中?亦必须拆成2 的n次幂相加的情况)

到此已经很清楚了:

只要将用户的权值enable拆成2 的n次幂相加的情况,

如果其中有n=0,则拥有第一项权力select,

如果其中有n=1,则拥有第二项权力insert,

如果其中有n=2,则拥有第三项权力update,

如果其中有n=3,则拥有第四项权力delete,

那么怎样将用户权值enable快拆成2 的n次幂相加的情况呢?

呵呵!只要将enable转化为二进制,从右向左依次取基,若基为的位则拥有相应权利,

举例:

(11)10=(1011)2,即拥有第一、二、四项权力,和“用户权力列表”相符;

(12)10=(1100)2,即拥有第三、四项权力,和“用户权力列表”相符;

(15)10=(1111)2,即拥有第一、二、三、四项权力,和“用户权力列表”相符;

当权利等级极其复杂时,该算法可以很快知道用户权力:

例如:

共8个等级,用户权值enable=67;(67)10=(1000011)2,即拥有第一、六、七项权力,

用户权值enable=67;(159)10=(10011111)2,即拥有第一、四、五、六、七、八项权力。

到此结束,希望没有浪费您的时间,对您有所启发。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 用户权力详解-PHP教程,其它文章
分享到: 更多 (0)

相关推荐

  • 暂无文章