php实现人员的权限管理

时间:2021-11-05 05:50:12

权限是指不同的人员登录以后会用不同的页面。

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

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

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

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

php实现人员的权限管理   php实现人员的权限管理  php实现人员的权限管理

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

php实现人员的权限管理   php实现人员的权限管理

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

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

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

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

  看下效果:

php实现人员的权限管理

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

(2)链接数据库操作,遍历出数据库中的用户

<?php
require "DBDA.class.php";
$db=new DBDA();
$sql="select * from users";
$arr=$db->query($sql);
foreach($arr as $v)
{
echo "<option value='{$v[0]}'>{$v[2]}</option>";
}
?>

 php实现人员的权限管理 

这样下拉框里就有数据了

(3)用户写好之后,就是角色了,可以使用复选框的方式显示,和上面一样的方法,

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

<div>请选择角色:
<?php
$sql="select * from juese";
$arr=$db->query($sql);
foreach($arr as $v)
{
echo "<input class='ck' type='checkbox' value={$v[0]} />{$v[1]}";
}
?>
</div>

 php实现人员的权限管理 

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

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

 php实现人员的权限管理 

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

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

function Sel()
{
var uid=$("#user").val();
$.ajax({
url:"gaichuli.php",
data:{uid:uid},
type:"POST",
dataType:"TEXT",
success: function(data){
var js=data.trim().split("|");
var ck=$(".ck");
ck.prop("checked",false);
for(var i=0;i<ck.length;i++)
{
var v=ck.eq(i).val();
if(js.indexOf(v)>=0)
{
ck.eq(i).prop("checked",true);
}
}
} })
}

 处理页面

require "DBDA.class.php";
$Uid=$_POST["uid"];
$db=new DBDA();
$sql="select JueSeId from userinjuese where UserId='{$Uid}'";
echo $db->StrQuery($sql);

 效果:

php实现人员的权限管理 

这样就可以了

(6)最后就是保存修改后的值了

可以直接用全部删除在重新写入的方法来进行值的选择;对保存按钮添加单击事件

$("#baocun").click(function(){
var uid=$("#user").val();
var str="";
var ck=$(".ck");
for(var i=0;i<ck.length;i++)
{
if(ck.eq(i).prop("checked"))
{
str=str+ck.eq(i).val()+",";
}
}
str=str.substr(0,str.length-1);
$.ajax({
url:"add.php",
data:{uid:uid,js:str},
type:"POST",
dataType:"TEXT",
success: function(data){
alert("保存成功")
}
})
})

 保存的处理页面

<?php
require "DBDA.class.php";
$Uid=$_POST["uid"];
$js=$_POST["js"];
$db=new DBDA(); //清空原有角色
$sql="delete from userinjuese where UserId='{$Uid}'";
$db->query($sql,0); //添加选中的角色
$ajs=explode(",",$js);
foreach($ajs as $v){
$sql="insert into userinjuese values('','{$Uid}','{$v}')";
$db->query($sql,0);
}

 这个管理员的页面到这也就结束了,整体的看下结果:

这个是默认的

php实现人员的权限管理 

这个是保存后的

php实现人员的权限管理

三、管理员页面弄好之后,就是登陆页面了,用户的登录页面很简单。

(1)登录的基本显示:

<form action="yhdlchuli.php" method="post">
<div>用户名:<input type="text" name="uid" /></div>
<div>密码:<input type="password" name="pwd" /></div>
<input type="submit" value="登录" />
</form>

(2)这里登录,我们用php进行登录。

<?php
session_start(); require "DBDA.class.php";
$db=new DBDA();
$uid=$_POST["uid"];
$pwd=$_POST["pwd"];
$sql="select pwd from users where uid='{$uid}'";
$mm=$db->StrQuery($sql);
var_dump($mm);
if($mm==$pwd && !empty($pwd))
{
$_SESSION["uid"]=$uid;//这里我们将登陆的id保存到session里再登陆成功转到主页面的时候要用到
header("location:neirong.php");
}
else
{
echo "用户名或密码错误!";
}

四、登录成功的主页面:每个用户的主页面应该是不一样的  

 (1)既然用到session,那就先将session开启然后判断

<?php
session_start(); //开启session
if(empty($_SESSION["uid"])) //判断session是否为空
{
  header("location:login.php"); //空的话就返回登录页面
}
else
{
  echo $_SESSION["uid"]; //否则就输出用户名
}
?>

 (2)传值 遍历出来后我用div显示并且我还加了样式

<?php
$uid=$_SESSION["uid"];
require "DBDA.class.php";
$db=new DBDA();
$sql="select * from rules where code in (select distinct ruleid from juesewithrules where jueseid in
(select jueseid from userinjuese where userid='{$uid}'))";
$arr=$db->query($sql);
foreach($arr as $v)
{
echo "<div Code={$v[0]} class='list'>{$v[1]}</div>";
}
?>

  

<style>
.list{width:100px;
height:35px;
border:1px solid #300;
background-color:#009;
color:#000;
margin:0px 2px 0px 2px;
text-align:center;
vertical-align:middle;
line-height:35px;}
</style>

 最后就是可以登录显示不一样用户权限功能的页面了,看下整体结果: 

 php实现人员的权限管理 php实现人员的权限管理

李四只有这两个功能

我们再看看其他人的

php实现人员的权限管理    php实现人员的权限管理

他们这些职务是与数据库中相对应的。