php权限二进制,使用二进制进行权限控制

本文介绍了如何利用二进制进行权限控制,以简化逻辑判断和提升效率。通过设置不同的权限值(如增加、修改、删除、查询),通过位运算实现权限的授予、回收和验证。例如,用户权限值14(1110二进制)代表拥有查询、修改和删除权限,而验证用户是否有增加权限则会返回false。这种方法在Linux系统的权限管理中也有应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用二进制进行权限控制,可减少程序的逻辑判断以及提升效率,linux系统的777权限原理也是通过2进制进行判断的

例如,当需要判断某个账号是否有,增加,修改,删除,查询,常规判断需要4个权限字段,进行4种判断

使用二进制判断,只需要位运算判断权限码就行了

以下是原理以及教程

配置增删查改权限值$creat=1;//增0001

$update=2;//改0010

$read=4;//查0100

$delete=8;//删1000

术语定义:

授权码:权限值的集合表示,例如linux的777权限,其实是

0001|0010|0100 = 0111(十进制7)

授权值:单个权限的权限值,例如linux的执行(1)写入2读取4,注意:权限值必须是2的幂级数,否则会出错!

授权:权限码=授权码的'或'操作0001|0010|0100 = 0111(十进制7)

回收权限:待回收的权限取反之后,和授权码进行'与'操作,例如,1111权限,去除增加权限,0001取反为1110,1110&1111 = 1110

验证权限:1:"授权值" = "授权码"&'授权值'  2:"授权码" = "授权码"|"授权值"

具体解释:

权限值:

php的int类型32位支持21亿左右的数值,转为二进制最大支持31位,可代表31种权限状态,理论上是足够用的啦

例如$creat=1;//增0001

$update=2;//改0010

$read=4;//查0100

$delete=8;//删1000

$othe_1=16;//其他10000

$othe_2=32;//其他100000

$othe_3=64;

$othe_4=128;

授权:

例如用户a有查,改,删除权限

则$a = $read|$update|$delete;

echo $a;//a= 14;二进制为1110

验证权限

判断用户$a是否有增加权限,var_dump($creat==($creat&$a));//输出false,代表没有增加权限

var_dump($a==($a|$creat));//输出false,代表没有增加权限

判断用户$a是否有修改权限var_dump($update==($update&$a));//输出true,代表有修改权限

var_dump($a==($a|$update));//输出true,代表有修改权限

以上就是二进制权限控制的内容啦,这样进行验证权限,可以少去多重判断,少几个表字段,还能提高代码运行效率哦!

本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值