分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

php 权限 管理

发布时间:2023-09-06 02:22责任编辑:彭小芳关键词:暂无标签

权限的思考:

https://www.jianshu.com/p/cf9077a7d38a

权限例子,用户 角色 功能 用户角色关联表 角色功能关联表

http://www.cnblogs.com/nuanai/p/6293344.html

1.想好权限管理的作用?

2.有什么权限内容?

3.既然有权限管理那么就会有管理员?

4.登录后每个人员的界面会是不一样的?

一、想好这个权限是什么?

就做一个就像是vip的功能,普通用户和vip用户的功能是不一样的,先来考虑一下数据库怎么设计

肯定要有用户表、还有用户所用的角色、然后就是权限功能表;可是在这里面有关联也就 是会另外有两张相互关联的表,这样也就是5张表

在数据库中建好这五张表:

(1)用户表、角色表、功能表

(2)主表中的外键关系得两个表:用户与角色表、角色与功能表

二、建好表之后就是开始写代码了,首先是管理员的页面

注意:这里只写了用户和角色的管理界面,没有写角色和功能的管理页面,但是它们都是一样的,会其一就会其二了

可以选择用户,然后根据选择复选框来给他们添加说是删除一些功能

(1)先可以显示出想要的效果:比如用户的选择可以用下拉列表

1
2
3
<div>请选择用户:
  <select id="uid">//给这个起个名字,可以在下面的操作中加事件<br>  //这里是遍历数据库中的用户表<br>  </select>
</div>

看下效果:

下拉列表中还没有值,是因为还没有进行数据库操作

(2)链接数据库操作,遍历出数据库中的用户(遍历数据库前面的随笔中已经写过很多遍了)

1
2
3
4
5
6
7
//只是遍历数据库就可以,不用传值的话,就不用写传值数据和传值方式了<br>$.ajax({
url:"admain_cl.php",//用户的处理界面
dataType:"TEXT",//返回的数据类型
success:function(data){<br>         //处理页面执行成功后将要执行的代码处
}
})
});

(3)用户的处理界面

1
2
3
4
5
6
7
<?php
include("DBDA.class.php");//调用封装好的数据库类
$db=newDBDA();//造新对象
$sql="select * from users";//查询语句,查询用户表中的所有信息
echo$db->StrQuery($sql);//执行封装类中的字符串转换方法
?>

封装类中的字符串转化方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?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)处理页面写好了之后,就可以写主页面中,执行处理页面成功后的代码了

1
2
3
4
5
6
7
8
9
10
success:function(data){
varhang = data.split("|");//分割行
varstr ="";
for(vari=0;i<hang.length;i++)//循环
{
varlie = hang[i].split("^");//分割列
str +="<option value=‘"+lie[0]+"‘>"+lie[2]+"</option>";//拼接下拉列表项:想要显示的是用户名,所以表中索引是2代表了name,给这个项的值是代号,下面将会用到
}
$("#uid").html(str);//将值写入下拉列表中
}

经过这4步后看下结果:数据库中用户表中的数据就可以遍历出来了

(5)用户写好之后,就是角色了,可以使用复选框的方式显示,这里还是可以用ajax,和上面一样的方法,不多说直接上代码

还是先要写个div放这个复选框

1
2
3
4
5
<div>请选择角色:
<div id="juese">
//遍历放值的地方
</div>
</div>

然后就是遍历数据库了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$.ajax({
url:"admain_cl1.php",//功能的处理页面
dataType:"TEXT",//返回的数据类型
success:function(d){
varhang = d.split("|");//拆分行
varstr ="";
for(vari=0;i<hang.length;i++)
{
  varlie = hang[i].split("^");//拆分列
  str+="<input class=‘ck‘ type=‘checkbox‘ value=‘"+lie[0]+"‘ />"+lie[1];//显示的复选框,索引1就是数据库中的name列
}
$("#juese").html(str);//将值写入div中
}
});

角色的处理页面的代码

1
2
3
4
5
6
7
<?php
include("DBDA.class.php");//调用封装好的数据库类
$db=newDBDA();//造新对象
$sql="select * from juese";//查询语句,查询角色表中的所有信息
echo$db->StrQuery($sql);//执行封装类中的字符串转换方法
?>

写完之后就是运行查看下有没有错误

(6)修改完成后就是要保存了,在页面中写一个保存按钮

1
<input type="button"value="保存"id="save"/>//给这个按钮起个名字,因为要有点击事件

至此,页面的显示都可以完成了

(7)这样,在就是怎么让数据库中用户本有的角色显示出来,那就是要用到下拉列表和复选框的值了

可以把他写入方法里,然后调用这个方法

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
functionXuan()
{
  varuid = $("#uid").val();//找到下拉类表的值
  $.ajax({
url:"admain_cl2.php",//项的处理页面
data:{uid:uid},
type:"POST",
dataType:"TEXT",
success:function(b){
  varhang = b.split("|");//分割行
  varck = $(".ck");//找到复选项的值
  ck.prop("checked",false);//清理选中
  for(vari=0;i<ck.length;i++)
  {
varzhi = ck.eq(i).val();//取出选项的值
if(hang.indexOf(zhi)>=0)
{
  ck.eq(i).prop("checked",true);//是的话就让这一项的值选中
}
  }
}
  })
}