php使用位与运算符【&】或【|】实现权限管理
来源:互联网 发布:org.apache导入 编辑:程序博客网 时间:2024/06/11 02:23
2^0=1,相应2进数为”0001″(在这里^我表示成”次方”,即:2的0次方,下同)
2^1=2,相应2进数为”0010″
2^2=4,相应2进数为”0100″
2^3=8,相应2进数为”1000″
要判断一个数在某些数范围内就可以使用 & 运算符(数值从上面的表中得来)
如:7=4|2|1 (你也可以简单理解成7=4+2+1)
用 & 来操作,可以知道7&4、7&2、7&1都是真的,而如果7&8则是假的
例子:
<?php
// 定义权限
define("mHIGHT", 16);// 更高的权限,2的4次方
define("mDELETE", 8);// 删除的权限,2的3次方
define("mUPLOAD", 4);// 上传的权限,2的2次方
define("mWRITE", 2);// 写入的权限,2的1次方
define("mREAD", 1);// 只读,2的0次方
// 赋值给权限
echo mDELETE|mUPLOAD|mWRITE|mREAD;
if(19 & 16)
echo '有更高的权限<br>';
// 判断权限用&【位与符】,假设权限值$key
$key = 13;//13=8+4+1
if($key & mDELETE)
echo '有删除权限<br>';
if($key & mUPLOAD)
echo '有上传权限<br>';
if($key & mWRITE)
echo '有写入权限<br>';
if($key & mREAD)
echo '有只读权限<br>';
$key = 13;//13=8+4+1
if($key & 8)
echo '有删除权限<br>';
if($key & 4)
echo '有上传权限<br>';
if($key & 2)
echo '有写入权限<br>';
if($key & 1)
echo '有只读权限<br>';
?>
权限分值的这其中一个算法就是这样的,可以说是简单高效。也不知大家明白没有,不明白也没关系,记住例子就行了。前提就是做好权限值的分布,即那 个1、2、4、8、16….(这里还有个顺序问题,越高级的权限就要越高的权限值,比如上面的例子所演示的删除权限)。有了权限分布表就可以确定给某个人 什么权限了,你简单的理解成要哪个权限就加上相应的权限值吧。
这个方法很好用的,缺点就是如果权限分布得细的话,那么权限值会越来越大,你自己想想,2的几次方、如果所有的权限都要则是全部相加。不过对于一般的权限来说这个已经足够了
- php使用位与运算符【&】或【|】实现权限管理
- “与”和“或”运算实现权限管理
- “与”和“或”运算实现权限管理
- PHP巧妙利用位运算实现网站权限管理
- PHP巧妙利用位运算实现网站权限管理
- C#中使用位运算来实现权限管理
- C#中使用位运算来实现权限管理
- C# 使用位运算来实现权限管理
- 不使用按位运算符,实现或"|",与"&",左移位"<<",右移位">>"二进制运算
- Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
- Java的位运算符实例——与(&)、非(~)、或(|)、异或(^)
- Java的位运算符实例——与(&)、非(~)、或(|)、异或(^)
- php中的位运算符 与运算 或 异或 非
- 位与运算符 在权限中的使用
- php位运算 与 或 异或 取反
- C# 位运算权限管理
- RBAC位运算权限管理
- PHP中逻辑或||和位运算符或的区别和使用注意事项
- TinkPHP导出Excel表格
- TCP/IP协议入门(一)--阮一峰
- PHP设置脚本最大执行时间的三种方法
- jquery checkbox选中、改变状态、change和click事件
- 正则表达式匹配完整img标签php实现
- php使用位与运算符【&】或【|】实现权限管理
- udp接收广播并连接发送数据
- php 获取代码执行时间和消耗的内存
- php public protected private属性实例详解
- php pdo预处理语句与存储过程
- php错误级别的设置方法
- Restful风格的SSM框架搭建
- php Memcache/Memcached操作手册
- centos 安装flash插件