PHP位运算权限设计

来源:互联网 发布:mac桌面文件夹重命名 编辑:程序博客网 时间:2024/06/03 17:56
<?php//首先将权限按照2的次方来定义值,依次类推define('ADD',1);//增加权限define('UPD',2);//修改权限define('SEL',4);//查找权限define('DEL',8);//删除权限$a_access = ADD | UPD | SEL | DEL; // A拥有增删改查权限$b_access = ADD | UPD | SEL; // B拥有增改查权限$c_access = ADD | UPD; // C拥有增改权限if($a_access & ADD){    echo 'A拥有添加权限'. "\n";}if($b_all & DEL){    }else{    echo 'B没有删除权限'. "\n";}//假如要得到没有增加的权限,则$no_add_access = $a_access ^ ADD;echo "仅无法增加的权限:" .decbin($no_add_access). "\n";//输出1110,其中从右到左分别代表ADD UPD SEL DEL,因此最后一个0代表没有增加权限//要得到C用户没有的所有权限$c_allow = $a_access ^ $c_access;echo "C的反权限:" .decbin($c_allow). "\n";//输出1100,因此C的权限是0011,刚好反过来了

总结一下,以备后用,其实也可以尝试使用linux的权限设计方法,1,2,4来代表增删改,查询暂时不讨论,这样的话7就是全部权限,6就是删改,3就是增删,依次类推,权限设计在后台我们一般都是控制请求资源连接的方式,如MVC里面将所有的控制层action的请求都添加到数据库,然后关联到用户,从而判断,如果结合上面的方法,约定一些action的名称,实现起来会方便很多

原创粉丝点击