php 位运算权限问题
2015-09-22 18:03
666 查看
权限问题比如:linux角色权限 可读 可写 可运行 ,权限二进制分别是100 010 001,十进制就是4 2 1,数据库权限字段若为state 默认为0,通常权限都是多选框形式,如下图:
View Code
接下来我们提交取到的值就是$query['state'],是一个数组,array([0] => 1 [1] => 2 ),接下来就应该修改权限值,首先要获取一个值,这个值就要用到位运算
本来$currstate 输出值为2 6, 6便是这个最终的状态值
而如果想要获取当前的状态,如
这的&
<div class="row" style=" margin-left:24px;"> <input type="checkbox" id="player_state1" value="0" name="states[]" class="permission_item" /> <label for="player_state1">可运行</label> </div> <br> <div class="row" style=" margin-left:24px;"> <input type="checkbox" id="player_state2" value="1" name="states[]" class="permission_item" /> <label for="player_state2">可写</label> </div> <br> <div class="row" style=" margin-left:24px;"> <input type="checkbox" id="player_state3" value="2" name="states[]" class="permission_item" /> <label for="player_state3">可读</label> </div>
View Code
接下来我们提交取到的值就是$query['state'],是一个数组,array([0] => 1 [1] => 2 ),接下来就应该修改权限值,首先要获取一个值,这个值就要用到位运算
<<, 每次左移都乘以2
if (!empty($query['states'])) { foreach ($query['states'] as $t) { $currstate |= (1 << ($t)); //位运算 循环遍历 printf_r($currstate); } }
本来$currstate 输出值为2 6, 6便是这个最终的状态值
而如果想要获取当前的状态,如
//$CharState 为获取到的数据库值 $state1 = $CharState & 0x1; $state2 = $CharState & 0x2; $state3 = $CharState & 0x4;
这的&
得到的$state1 $state2 $state3 分别为三种状态值,有更好方法欢迎补充.
相关文章推荐
- thinkphp——制作一个输出调试函数,随时调试
- 利用PHP执行SQL文件,将SQL文件导入到数据库
- phpfpm使用自带的status优化步骤
- 深入浅出讲解:php的socket通信
- ThinkPHP-图片附件上传至指定目录并地址插入数据库操作
- Laravel5 入门小项目详细教程
- PHP非阻塞模式
- osx安装php mongo扩展出错解决方法
- phpcms自定义字段原理介绍
- Yii2 radioList设置默认值
- Thinkphp的query返回值的问题
- js的时间戳和php的时间戳转换需要注意的地方
- 基础四:ContentProvider
- php小数点后取两位
- 一键安装lnmp之php
- PHP对MYSQL数据库进行事务处理及表锁定
- 并发下常见的加锁及锁的PHP具体实现
- win2008r2 ftp
- PHP+MYSQL+AJAX实现每日签到功能
- ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据