PHP位运算权限设计

<?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的名称,实现起来会方便很多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值