php通过为运算符实现会员权限
2012-10-24 11:52
183 查看
php实现会员权限
1,如上图可以看出 2的0次方1 , 2的1次方2 ,2的2次方4 , 2的3次方8 ……
旁边的
1转换成二进制是1
2转换成二进制是10
4转换成二进制是100
8转换成二进制是1000
也就是说 2的n次方 后面对于的 二进制就是 n位数,后面加零就可以了
2、利用PHP位运算二进制实现权限控制
在PHP中要判断一个数在某些数范围内就可以使用 & 运算符。
& 是位运算,不是 && 逻辑运算 (位运算符:& | ^ ~)
例如:7=4|2|1 ===》 $sy = 4|2|1 意思是 $sy里面 可以包含 4 可以包含2 可以包含1
这里的或是指的可以能包含的内容值,在位运算里其实可以简单理解成 7=4+2+1,
用 & 来操作,可以知道7&4、7&2、7&1都是真的,而如果7&8则是假的。
(意思就是说7里面包含4也包含2也包含1 但是不包含8, 因为7可以看作是 1+2+4得成的)
我们还可以用^ 来从包含的值内去除:如 $ny = $sy ^ 2 (这里是把2给去除了,再赋值给$ny所以$ny里面只剩下4和1)
这样一来,$ny 只有 4|1 如果做判断也就只有 $ny&4、$ny&1
3、利用PHP位运算二进制实现权限控制
define("ADD", 1);//添加
define("UPD", 2);//编辑
define("LIS", 4);//读取
define("DEL", 8);//删除
//通过位或运算赋值给$all_full 如果 echo $all_full 将输出 15
$all_full = ADD | DEL | UPD | REA; 表示这个用户组 拥有所有权限
$all_sub = LIS | ADD | DEL;
echo decbin($all_full); //将输出 "1111" 也就是 4个1
$ny = $all_full^ UPD; //这里意思也就是把 2 去除,那么这里$ny 将不包含2
echo decbin($ny); //将输出 "1101" 也就是第三位 为假 因为不包含第三位 2
$ny = $all_full^ (UPD|ADD); //这里意思也就是把 2和1 去除,那么这里$ny 将不包含2和1
echo decbin($ny); //将输出 "1100" 也就是第三四位 为假 因为不包含第三四位 为什么结果会倒过来呢,因为是倒系的,大的排在前面
可以看出decbin() 函数的作用,顺序是倒过来的,不包含哪位哪位就为0 否则为1
4,从上面可以看出 最有一个权限字段存储 整形数组,比如存贮 15 意思就是 1+2+4+8
如果要判断一下 有没有 2 这个权限 可以 15&2 运算一下
如果保存 值为 3 按上面的数组来算的话, 就是只包含 添加 编辑权限
以下是 实例代码
//echo 15 & 1 将输出 1 , echo 15 & 4 将输出 4 , echo 15 & 8 将输出 0,这表明包含谁则返回谁,否则返回0
if($user_shell & ADD )
echo '有添加权限';
else
echo '没有权限';
$user_shell 为上面表中数据库 读取出来的值,为15 以上输出 "有添加权限"
1,如上图可以看出 2的0次方1 , 2的1次方2 ,2的2次方4 , 2的3次方8 ……
旁边的
1转换成二进制是1
2转换成二进制是10
4转换成二进制是100
8转换成二进制是1000
也就是说 2的n次方 后面对于的 二进制就是 n位数,后面加零就可以了
2、利用PHP位运算二进制实现权限控制
在PHP中要判断一个数在某些数范围内就可以使用 & 运算符。
& 是位运算,不是 && 逻辑运算 (位运算符:& | ^ ~)
例如:7=4|2|1 ===》 $sy = 4|2|1 意思是 $sy里面 可以包含 4 可以包含2 可以包含1
这里的或是指的可以能包含的内容值,在位运算里其实可以简单理解成 7=4+2+1,
用 & 来操作,可以知道7&4、7&2、7&1都是真的,而如果7&8则是假的。
(意思就是说7里面包含4也包含2也包含1 但是不包含8, 因为7可以看作是 1+2+4得成的)
我们还可以用^ 来从包含的值内去除:如 $ny = $sy ^ 2 (这里是把2给去除了,再赋值给$ny所以$ny里面只剩下4和1)
这样一来,$ny 只有 4|1 如果做判断也就只有 $ny&4、$ny&1
3、利用PHP位运算二进制实现权限控制
define("ADD", 1);//添加
define("UPD", 2);//编辑
define("LIS", 4);//读取
define("DEL", 8);//删除
//通过位或运算赋值给$all_full 如果 echo $all_full 将输出 15
$all_full = ADD | DEL | UPD | REA; 表示这个用户组 拥有所有权限
$all_sub = LIS | ADD | DEL;
echo decbin($all_full); //将输出 "1111" 也就是 4个1
$ny = $all_full^ UPD; //这里意思也就是把 2 去除,那么这里$ny 将不包含2
echo decbin($ny); //将输出 "1101" 也就是第三位 为假 因为不包含第三位 2
$ny = $all_full^ (UPD|ADD); //这里意思也就是把 2和1 去除,那么这里$ny 将不包含2和1
echo decbin($ny); //将输出 "1100" 也就是第三四位 为假 因为不包含第三四位 为什么结果会倒过来呢,因为是倒系的,大的排在前面
可以看出decbin() 函数的作用,顺序是倒过来的,不包含哪位哪位就为0 否则为1
4,从上面可以看出 最有一个权限字段存储 整形数组,比如存贮 15 意思就是 1+2+4+8
如果要判断一下 有没有 2 这个权限 可以 15&2 运算一下
如果保存 值为 3 按上面的数组来算的话, 就是只包含 添加 编辑权限
以下是 实例代码
//echo 15 & 1 将输出 1 , echo 15 & 4 将输出 4 , echo 15 & 8 将输出 0,这表明包含谁则返回谁,否则返回0
if($user_shell & ADD )
echo '有添加权限';
else
echo '没有权限';
$user_shell 为上面表中数据库 读取出来的值,为15 以上输出 "有添加权限"
相关文章推荐
- 实用PHP会员权限控制实现原理分析
- php使用位与运算符【&】或【|】实现权限管理
- php使用位与运算符【&】位或运算符【|】实现权限管理
- 实用PHP会员权限控制实现原理分析 .
- 实用PHP会员权限控制实现原理分析
- 实用PHP会员权限控制实现原理分析
- PHP+MYSQL会员系统的登陆即权限判断实现代码
- php使用位与运算符【&】或【|】实现权限管理
- Nginx多站点虚拟主机实现单独启动停止php-fpm、单独控制权限设置
- 在PHP中,通过filesize函数可以取得文件的大小,文件大小是以字节数表示的。如果要转换文件大小的单位,可以自己定义函数来实现。
- 用PHP实现通过Web执行C/C++程序
- php中通过Ajax如何实现异步文件上传的代码实例
- android通过chmod命令实现文件权限修改
- PHP会员找回密码功能的简单实现
- PHP会员找回密码功能的简单实现
- PHP实现通过中文字符比率来判断垃圾评论的方法
- PHP之运用CI用钩子实现URL权限控制
- php动态网页实现页面静态化 通过在初次被访问时生成html文件保存起来,下次该PHP程序被访问时就直接找到以前被访问过的html页面