php之 人员的权限管理(RBAC)
1. 想好权限管理的作用?
2. 有什么权限内容?
3. 既然有权限管理那么就会有管理员?
4. 登录后每个人员的界面会是不一样的?
一、想好这个权限是什么?
就做一个就像是 vip 的功能,普通用户和 vip 用户的功能是不一样的,先来考虑一下数据库怎么设计
肯定要有用户表、还有用户所用的角色、然后就是权限功能表;可是在这里面有关联也就 是会另外有两张相互关联的表,这样也就是 5 张表
在数据库中建好这五张表:
(1)用户表、角色表、功能表
(2)主表中的外键关系得两个表:用户与角色表、角色与功能表
二、建好表之后就是开始写代码了,首先是管理员的页面
注意:这里只写了用户和角色的管理界面,没有写角色和功能的管理页面,但是它们都是一样的,会其一就会其二了
可以选择用户,然后根据选择复选框来给他们添加说是删除一些功能
(1)先可以显示出想要的效果:比如用户的选择可以用下拉列表请选择用户:
//这里是遍历数据库中的用户表
看下效果:
下拉列表中还没有值,是因为还没有进行数据库操作
(2)链接数据库操作,遍历出数据库中的用户(遍历数据库前面的随笔中已经写过很多遍了)//只是遍历数据库就可以,不用传值的话,就不用写传值数据和传值方式了
$.ajax({
url:"admain_cl.php",//用户的处理界面
dataType:"TEXT",//返回的数据类型
success:function(data){
//处理页面执行成功后将要执行的代码处
}
})
});
(3)用户的处理界面<?php
include("DBDA.class.php");//调用封装好的数据库类
$db=newDBDA();//造新对象
$sql="select * from users";//查询语句,查询用户表中的所有信息
echo $db->StrQuery($sql);//执行封装类中的字符串转换方法
?>
封装类中的字符串转化方法:<?php
classDBDA
{
public$host="localhost";//使用的什么连接,这里是本地连接方式
public$uid="root";//数据库用户
public$password="123";//用户的密码
public$dbname="test1";//使用的数据库名
//返回字符串的方法
publicfunctionStrQuery($sql,$type=1)
{
$db=newMySQLi($this->host,$this->uid,$this->password,$this->dbname);
$r=$db->query($sql);//执行查询语句
if($type==1)
{
$attr=$r->fetch_all();
$str="";
foreach($attras$v)
{
$str.=implode("^",$v)."|";//拼接数组为字符串
}
returnsubstr($str,0,strlen($str)-1);//截取字符串:最后的拼接符不显示
}
else
{
return$r;
}
}
?>
(4)处理页面写好了之后,就可以写主页面中,执行处理页面成功后的代码了success:function(data){
varhang=data.split("|");//分割行
varstr="";
for(vari=0;i
{
varlie=hang[i].split("^");//分割列
str+=""+lie[2]+"";//拼接下拉列表项:想要显示的是用户名,所以表中索引是2代表了name,给这个项的值是代号,下面将会用到
}
$("#uid").(str);//将值写入下拉列表中
}
经过这 4 步后看下结果:数据库中用户表中的数据就可以遍历出来了
(5)用户写好之后,就是角色了,可以使用复选框的方式显示,这里还是可以用 ajax,和上面一样的方法,不多说直接上代码
还是先要写个 div 放这个复选框
//遍历放值的地方