学习php,自己写了个小后台,现在需要把后台的管理功能的权限分布下,谁有比较好的代码贴上来,让俺学习下。

解决方案 »

  1.   

    选择则1不选择则0, 在转换十进制存入数据库
    存取的时候转换二进制。比如:
     echo bindec('010');
    十进制等于2
      

  2.   

    ===========================================
    我的想法是:
    1.先定义菜单的ID
    2.把菜单id插入到adminuser的一个属性里,比如adminPriv字段,形成这样的一个字符串:12:Y$$16:N$$
    12标示菜单的ID,Y标示是否允许操作,$是分隔符,
    3.前台把adminPriv字段字符串形成一个数组,然后遍历这个数组,形成对应的权限
      

  3.   


    你应该这么看, 有权限给1没有给0。
    在用户注册的时候就给予相应的权限。
    勾选了相应的权限给1没有勾选给0。
    然后吧这010(注意权限的顺序,固定的顺序)当成字符串(不是字符串开头零就被截掉)转换十进制。
    这样你数据只要存1个十进制就可以。
    在检查相应的权限时读出十进制转换二进制得到010字符串一目了然。用数组还要遍历什么的麻烦也可以用^ 或者& 运算
      

  4.   

    建议楼主去参考一下 Rabc这边我写一下简单的思路
    我是这样来分担
       Operation(操作)     Task(业务)     Role(角色) 先定义好每个 Operation,比如说这边操作有:查看,添加,删除,更新,$id添加,$id查看,$id删除,$id更新.
    (这边的$id就是用户id,为了实现自己只能对自己的添加,查看,删除和更新这类需求)Task:比如说你一个查看,还有更新等 你就把对应的操作分给他们(属于业务吧)Role:比如有超级管理员,还有数据维护员 只要定义好一些业务逻辑,然和把业务分给角色就行了关系图:
     Operation(操作) <---(多对多)--->    Task(业务) <---(多对多)--->    Role(角色)
      

  5.   

    当然你用符号分隔也可以。比如:12:Y$$16:N$$
    $str="12:Y$$16:N$$";
    $arr=explode("$$", $str);
    $arr = array_diff($arr, array(null));//去空值
    $a=$b=array();
    foreach($arr as $k=>$v)
    {
    $a=explode(":",$v);
    $b[$a[0]]=$a[1];
    }
    print_r($b);