控制人员权限用的最多的应该是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({                        //调用ajaxurl:"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方法,如果不存在则返回-1ck.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;
         }
     }
     //返回JSONpublic 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);
 } ?>

功能完成了。结束

转载于:https://www.cnblogs.com/daofaziran/p/11556980.html

php实现人员权限管理(管理员界面)相关推荐

  1. php人员权限管理(RBAC)

    在说权限管理前,应该先知道权限管理要有哪些功能: (1).用户只能访问,指定的控制器,指定的方法 (2).用户可以存在于多个用户组里 (3).用户组可以选择,指定的控制器,指定的方法  (4).可以添 ...

  2. php实现人员权限管理(用户界面)

    上一篇介绍的是管理员页面,能完成对用户的角色修改和保存,这里来说一下用户界面,用户通过登录,显示出其对应功能界面. 1.登录页面(用的ajax,也可以用php表单提交方式) <!DOCTYPE ...

  3. RDIFramework.NET ━ 9.8 用户权限管理 ━ Web部分

    RDIFramework.NET ━ .NET快速信息化系统开发框架 9.8 用户权限管理 -Web部分 在实际应用中我们会发现,权限控制会经常变动,如:需要调整角色的分配,需要收回与授予某些角色.用 ...

  4. Javawebservlet+Mysql实现的化妆品售卖系统(功能包含分角色,登录/注册、化妆品列表/商品详情/加入购物车/订单结算付款/地址管理/后台权限管理/商品管理/订单列表等)

    博客目录 Javawebservlet+Mysql实现的化妆品售卖系统 实现功能截图 系统功能 使用技术 代码 完整源码 Javawebservlet+Mysql实现的化妆品售卖系统 本系统为了解决化 ...

  5. 网上书城(登录、注册、权限管理)

    网上书城(登录.注册.权限管理) 前言 登录 注册 权限管理 前言 网上书城包括前台.后台 网上书城前台内容: 1 .首页 2. 用户注册/登陆 3. 书籍查询 4 .购物车 5. 订单管理 5.1. ...

  6. 通用权限管理系统组件 (GPM - General Permissions Manager) 权限管理以前我们都是自己开发,可是到下一个系统又不适用,又改,加上人员流动大,管理很混乱...

    为什么80%的码农都做不了架构师?>>>    权限管理以前我们都是自己开发,可是到下一个系统又不适用,又改,加上人员流动大,管理很混乱 Ψ吉日嘎拉 采用通用权限管理系统,这些烦恼就 ...

  7. 网易服务器修改权限等级,网易七鱼客服管理_七鱼客服管理人员权限设置_企业服务汇...

    编者按:网易七鱼的客服权限设置功能能够方便企业针对不同角色的客服人员分配不同的系统操作权限,客服权限的分配主要包括了对系统设置权限.数据查看范围及导出权限.功能使用权限这三大类权限的分配,其中系统设置 ...

  8. cognos java用户权限_Cognos 权限管理之第三方目录管理员器、报表服务器权限管理、FrameWork权限管理等详细配置 【39页深度好文图文并茂带你全面了解Cognos权限管理】...

    一.引言 1.1. 编写目的 本文档是结合以往的开发经验,从实际报表开发出发,详细介绍了ReportNet报表设计流程.开发技巧,报表性能调优.FM建模规范及技巧讲解.总结的文档希望对大家在日后的开发 ...

  9. mysql如何创建非管理员权限_mysql权限管理,一个非db管理员创建mysql的做法_MySQL...

    bitsCN.com mysql权限管理,一个非db管理员创建mysql的做法 安装了mysql,建了数据库,需要几个账号,进行权限管理,现总结如下 一个建了四个账号. 1. root 账号,这是安装 ...

最新文章

  1. 前端之Bootstrap框架
  2. python画图-python画图汇总(持续更新)
  3. xdoj判断堆栈出栈序列是否有效c++
  4. 1584 - Circular Sequence
  5. 分析数万条国庆旅游评论数据后,我发现了“坑爹”景点背后的秘密
  6. Dropbox被墙了,幸亏还有类似服务SugarSync
  7. 替换Mac的home brew源
  8. HTTP请求报文格式与HTTP2.0
  9. 爬虫小白第一篇 西刺代理
  10. 【任玉刚】给Android程序员的一些面试建议
  11. windows屏幕分辨率获取方式
  12. 什么击计算机窗口可以打开资源管理器,Win8系统打开资源管理器窗口经常自动重启电脑解决措施...
  13. 微信小程序uniapp高德开放平台路线规划1对多导航路线方法记录
  14. 【暗时间】摘录 - 为什么你应该从现在开始就写博客
  15. 互联网晚报 | 12月30日 星期四 | 百度网盘青春版正式上线;汽车之家回应“年底大裁员”;A股年内成交额创历史新高...
  16. 数字华容道(C++)
  17. php防刷红包,PHP防止多次请求刷红包的方法
  18. leetcode 507 完美数
  19. 如何做浏览器兼容性测试?教你几招
  20. java使用freemarker生成word

热门文章

  1. 荣耀9将要回归金属材质,网友直呼:看着就很贵
  2. 【HAOI2010】订货
  3. 集群四 mysql-5.7.16一键安装
  4. BZOJ 3534 重建
  5. zabbix应用之获取监控项的graph曲线图
  6. mysql出现多线程操作同一个表的情况,应该怎么办?
  7. mingw控制台中文乱码
  8. PHP7 - MongoDB Driver 使用心得
  9. Construct Binary Tree from Inorder and Postorder Traversal
  10. 相机位姿估计2:[应用]实时位姿估计与三维重建相机姿态