控制人员权限用的最多的应该是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);
}
?>

功能完成了。结束

php实现人员权限管理(管理员界面)的更多相关文章

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

    一.想好这个权限是什么? 就做一个就像是vip的功能,普通用户和vip用户的功能是不一样的,先来考虑一下数据库怎么设计 肯定要有用户表.还有用户所用的角色.然后就是权限功能表:可是在这里面有关联也就 ...

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

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

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

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

  4. [Django]用户权限学习系列之权限管理界面实现

    本系列前三章: http://www.cnblogs.com/CQ-LQJ/p/5604331.htmlPermission权限基本操作指令 http://www.cnblogs.com/CQ-LQJ ...

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

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

  6. RDIFramework.NET ━ 9.9 角色权限管理 ━ Web部分

    RDIFramework.NET ━ .NET快速信息化系统开发框架 9.9  角色权限管理 -Web部分 角色权限管理模块主要是对角色的相应权限进行集中设置.在角色权限管理模块中,管理员可以添加或移 ...

  7. 六、EnterpriseFrameWork框架基础功能之权限管理

    回<[开源]EnterpriseFrameWork框架系列文章索引> 从本章开始进入框架的第二块内容“EnterpriseFrameWork框架的基础功能”,包括:权限管理.字典数据管理. ...

  8. Admin后台权限管理、三大认证

    目录 APIView的请求生命周期 三大认证规则 权限六表 自定义User表 详细配置演示 models.py setting.py admin.py 使用过程: 控制填写信息的字段 控制添加权限 控 ...

  9. php之 人员的权限管理(RBAC)

    1.想好权限管理的作用? 2.有什么权限内容? 3.既然有权限管理那么就会有管理员? 4.登录后每个人员的界面会是不一样的? 一.想好这个权限是什么? 就做一个就像是vip的功能,普通用户和vip用户 ...

随机推荐

  1. centos 宝塔面版 运行 thinkjs

    centos 宝塔面版 运行 thinkjs 几点要注意的地方: 1.  https ssl 如图 2. thinkjs 运行子目录在/www如图配置: 3. 代理配置(展示查看配置) server ...

  2. LD SCore计算基因多效性、遗传度、遗传相关性(the LD Score regression intercept, heritability and genetic correlation)

    这篇文章是对之前啊啊救救我,为何我的QQ图那么飘(全基因组关联分析)这篇文章的一个补坑. LD SCore除了查看显著SNP位点对表型是否为基因多效性外,还额外补充了怎么计算表型的遗传度和遗传相关性. ...

  3. html5画界面常用标签整理

    0.顶部一张banner图片横铺 .tl-header{ width: 100%; height: auto; } <section class="tl-header"> ...

  4. [LeetCode] 167. Two Sum II - Input array is sorted 两数和 II - 输入是有序的数组

    Given an array of integers that is already sorted in ascending order, find two numbers such that the ...

  5. [LeetCode] 388. Longest Absolute File Path 最长的绝对文件路径

    Suppose we abstract our file system by a string in the following manner: The string "dir\n\tsub ...

  6. 自定义电脑IP地址

    一台电脑有了ip地址才能上网,ip就是电脑的标识,在互联网中就是其中的一份子. 默认情况下电脑会自动获取IP地址,当无法自动获取或与网络IP地址相冲突时,就要自行设置电脑静态IP地址. 如下图步骤:

  7. mongodb 切换wiredtiger

    1.由于最近用到mongodb但查询时前十分左右,用压力测试不太稳定,所以换成第三方引擎试试,但效果还是一样. 具说第三方引擎比较给力,但在使用没有发现.现将mongodb切换wiredtiger引擎 ...

  8. kexue shangwang

    根据实践,pptp.IPsec甚至OpenVPN等kexue上网法已经无法顺利翻越GFW.通过抓包可知,GFW会将pptp的握手期间的ack包吞掉,导致本地一直无法收到服务器端的响应.而OpenVPN ...

  9. PHP命令行参数

    原文地址:http://php.swoole.com/wiki/PHP%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%82%E6%95%B0   PHP命令行参数 目录 [隐藏]  ...

  10. sql 查找所有已经分配部门的员工

    查找所有已经分配部门的员工的last_name和first_nameCREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL,`dept_no` char( ...