zoukankan      html  css  js  c++  java
  • php 位运算权限问题

    权限问题比如:linux角色权限 可读 可写 可运行 ,权限二进制分别是100 010 001,十进制就是4 2 1,数据库权限字段若为state 默认为0,通常权限都是多选框形式,如下图:

     1 <div class="row" style=" margin-left:24px;">
     2     <input type="checkbox" id="player_state1" value="0" name="states[]" class="permission_item"  /> <label for="player_state1">可运行</label>
     3 </div> 
     4 <br>
     5 <div class="row" style=" margin-left:24px;">
     6     <input type="checkbox" id="player_state2" value="1" name="states[]" class="permission_item"  /> <label for="player_state2">可写</label>
     7 </div>
     8 <br>
     9 <div class="row" style=" margin-left:24px;">
    10     <input type="checkbox" id="player_state3" value="2" name="states[]" class="permission_item"  /> <label for="player_state3">可读</label>
    11 </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 分别为三种状态值,有更好方法欢迎补充.
  • 相关阅读:
    玩转 CSS3 3D 技术
    什么是网站劫持?
    html5 播放 rtsp
    display:none和visibility:hidden两者的区别
    css中div透明度有几种方法设置?
    前端有架构吗?
    HTML a标签打开新标签页避免出现安全漏洞,请使用“noopener”
    写给刚入门的前端工程师的前后端交互指南
    为什么会出现CSS前缀?
    cookies和session得一些理解
  • 原文地址:https://www.cnblogs.com/danche/p/4829872.html
Copyright © 2011-2022 走看看