php实现人员的权限管理

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

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

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

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

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

     

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

   

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

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

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

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

  看下效果:

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

(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>";
		}
    	?>

  

这样下拉框里就有数据了

(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>

  

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

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

  

(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);

 效果:

 

这样就可以了

(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);
}

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

这个是默认的

 

这个是保存后的

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

(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>

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

  

李四只有这两个功能

我们再看看其他人的

    

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

 

 

 

posted @ 2017-05-23 16:19  小牛吃青草  阅读(3621)  评论(2编辑  收藏  举报