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>

 最后就是可以登錄顯示不一樣用戶權限功能的頁面了,看下整體結果: 

  

李四只有這兩個功能

我們再看看其他人的

    

他們這些職務是與數據庫中相對應的。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM