php實現人員權限管理(管理員界面)


控制人員權限用的最多的應該是OA辦公自動化系統和像ERP,CRM,CMS這樣的管理系統,就是通過控制用戶的權限來控制其擁有的角色和功能,比如管理員可以擁有所有權限和功能,前台只能擁有登記和通報信息等。

一般標准的權限管理都會有5張數據表來控制,形成一個W型的連接關系,如下

看看表的結構

1.用戶表 2.用戶角色對應表 3.角色表 4.角色功能對應表 5.功能表

         

首先我們來做一個管理員的頁面,這個頁面能顯示所有用戶,並且能看到他們對應的角色,這里我們還能修改他們的角色,先看看效果

 一步步來,先寫出來選擇用戶的功能,當然,顯示的用戶都是從用戶表里加載過來的

  請選擇用戶:
    <select id="sel">
        <option>請選擇</option>
      <?php
      require "../DataBase.class.php";
      $db=new DataBase();
      $sql="select * from users";
      $arr=$db->Query($sql);
      foreach($arr as $v){
         echo "<option value='{$v[0]}'>{$v[2]}</option>";
         
         }
     ?>
   </select>

再把角色的復選框寫出來 ,附帶那個保存按鈕也寫出來吧

請選擇角色:
    <?php
    $sql2="select * from juese";
    $arr2=$db->Query($sql2);
    foreach($arr2 as $k){
        
        echo "<input type='checkbox' class='ck' value='{$k[0]}'>$k[1]";
        
        }
    ?>

<div><input type="button" id="save"  value="保存"/></div>

界面寫完了,下面實現功能代碼

功能1.選擇相應用戶,默認顯示他對應的角色(復選框的默認選中)

用jquery的函數實現(頁面開頭先引入Jquery)

 $("#sel").change(function (){
          var uid=$("#sel").val();       //取到下拉選擇的用戶
          $.ajax({                        //調用ajax
                  url:"chuli.php",
                  data:{uid:uid},
                  type:"POST",
                  dataType:"TEXT",
                  success: function(data){
                          var js=data.trim().split("|");    //返回的字符串只有行,進行拆分和去空格,然后得到的是角色數組
                         var ck=$(".ck");                //獲取所有復選框的值,交給了一個ck數組
                         ck.prop("checked",false);        //先清空上次選擇用戶時留下的復選內容
                         for(var i=0;i<ck.length;i++)    //遍歷判斷
                         {
                             var v=ck.eq(i).val();        //v代表的是每個復選框的值
                             if(js.indexOf(v)>=0){        //判斷一下,返回的角色表中的數據是否存在,用的 indexOf方法,如果不存在則返回-1
                                 ck.eq(i).prop("checked",true);  //將數據庫存在的角色對應的屬性設置為選中
                                 
                                 }
                             }                                      
                     
                     }
             })
     
 });

下面是處理頁面chuli.php

 <?php
  $uid=$_POST["uid"];
  require "../DataBase.class.php";
  $db=new DataBase();
  $sql="select jueseid from userinjuese where userid='{$uid}'";
  echo $db->StrQuery($sql);   
 ?>

如果看不明白的話,看看這個返回字符串的類怎么寫的

 <?php
  class DataBase
  {
      public $host="localhost";
      public $uid = "root";
      public $pwd = "";
      public $dbname = "mydb";
      
      //成員方法
     public function Query($sql,$type=1)
     {
         $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
         $r = $db->query($sql);
         
         if($type==1)
         {
             return $r->fetch_all();
         }
         else
         {
             return $r;
         }
     }
     
     //返回字符串的方法
     public function StrQuery($sql,$type=1)
     {
         $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
         $r = $db->query($sql);
         
         if($type==1)
         {
             $attr = $r->fetch_all();
             $str = "";
             foreach($attr as $v)
             {
                 $str .= implode("^",$v)."|";
             }
             
             return substr($str,0,strlen($str)-1);
            }
         
         else
         {
             return $r;
         }
     }
     
     //返回JSON
     public function jsonquery($sql,$type=1)
     {
         $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
         $r = $db->query($sql);
         
         if($type==1)
         {
             return json_encode($r->fetch_all(MYSQLI_ASSOC));
         }
         else
         {
             return $r;
         }
     }
 }

功能2.修改用戶對應的角色,並且保存

  $("#save").click(function (){        //'保存'按鈕的點擊事件
          var uid=$("#sel").val();    //獲取下拉選擇的用戶
          var str="";
         var ck=$(".ck");            //獲取所有復選框的值,放到ck數組
          for(var i=0;i<ck.length;i++)
          {
              if(ck.eq(i).prop("checked"))   //判斷,如果復選框的值為選中
              {
                  str+=ck.eq(i).val()+",";  //將選中的復選框值用“,”拼接起來交給str
                 
                 }
             
             }
         str=str.substr(0,str.length-1);  //截取一下str,因為最后尾部會多余一個符號
         $.ajax({                            
             url:"save.php",
             data:{uid:uid,js:str},          //將用戶和拼接好的已選擇復選內容交給處理頁面
             dataType:"TEXT",
             type:"POST",
             success: function(data){
                 
                 alert("保存成功")
                 
                 }
             })
     })

處理頁面

  <?php
  $uid=$_POST["uid"];      //獲取到了傳遞的用戶
  $js=$_POST["js"];        //獲取到了傳遞過來的已選擇的復選框內容
  require "../DataBase.class.php";
  $db=new DataBase();
  $sql="delete from  userinjuese where userid='{$uid}'"; //先把數據庫中原來用戶的角色清空,不然修改起來會麻煩
  $db->Query($sql,0);
  $vv=explode(",",$js);        //將復選框內容拆分,因為傳來的是一個,隔開的長字符串,得到的vv是一個數組
  foreach($vv as $v){         //遍歷這個數組
 $sql2="insert into userinjuese values('','{$uid}','{$v}')"; //依次寫入數據庫
     $db->Query($sql2,0);
 } 
 ?>

功能完成了。結束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM