日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php权限管理

發布時間:2025/3/14 php 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php权限管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天我們做一個權限管理:做一個就像是vip的功能,普通用戶和vip用戶的功能是不一樣的,先來考慮一下數據庫怎么設計肯定要有用戶表、還有用戶所用的角色、然后就是權限功能表;可是在這里面有關聯也就 是會另外有兩張相互關聯的表,這樣也就是5張表

在數據庫中建好這五張表:

1、用戶表、角色表、功能表

2、建好表之后就是開始寫代碼了,首先是管理員的頁面

注意:這里只寫了用戶和角色的管理界面,沒有寫角色和功能的管理頁面,但是它們都是一樣的,會其一就會其二了

可以選擇用戶,然后根據選擇復選框來給他們添加說是刪除一些功能

(1)先可以顯示出想要的效果:比如用戶的選擇可以用下拉列表

<div>請選擇用戶:<select id="uid"> //給這個起個名字,可以在下面的操作中加事件<br>  //這里是遍歷數據庫中的用戶表<br>  </select> </div>

看下效果:

?

?

(2)鏈接數據庫操作,遍歷出數據庫中的用戶(遍歷數據庫前面的隨筆中已經寫過很多遍了)

//只是遍歷數據庫就可以,不用傳值的話,就不用寫傳值數據和傳值方式了<br>$.ajax({url:"admain_cl.php", //用戶的處理界面dataType:"TEXT", //返回的數據類型success: function(data){<br>         //處理頁面執行成功后將要執行的代碼處} }) });

(3)用戶的處理界面

<?php include("DBDA.class.php"); //調用封裝好的數據庫類 $db = new DBDA(); //造新對象$sql = "select * from users"; //查詢語句,查詢用戶表中的所有信息 echo $db->StrQuery($sql); //執行封裝類中的字符串轉換方法 ?>

(4)處理頁面寫好了之后,就可以寫主頁面中,執行處理頁面成功后的代碼了

success: function(data){var hang = data.split("|"); //分割行var str = "";for(var i=0;i<hang.length;i++) //循環 {var lie = hang[i].split("^"); //分割列str +="<option value='"+lie[0]+"'>"+lie[2]+"</option>"; //拼接下拉列表項:想要顯示的是用戶名,所以表中索引是2代表了name,給這個項的值是代號,下面將會用到 }$("#uid").html(str); //將值寫入下拉列表中 }

經過這4步后看下結果:數據庫中用戶表中的數據就可以遍歷出來了

(5)用戶寫好之后,就是角色了,可以使用復選框的方式顯示,這里還是可以用ajax,和上面一樣的方法,不多說直接上代碼

還是先要寫個div放這個復選框

<div>請選擇角色:<div id="juese">//遍歷放值的地方 </div> </div>

然后就是遍歷數據庫了

1 $.ajax({ 2 url:"admain_cl1.php", //功能的處理頁面 3 dataType:"TEXT", //返回的數據類型 4 success: function(d){ 5 var hang = d.split("|"); //拆分行 6 var str = ""; 7 for(var i=0;i<hang.length;i++) 8 { 9   var lie = hang[i].split("^"); //拆分列 10   str+="<input class='ck' type='checkbox' value='"+lie[0]+"' />"+lie[1]; //顯示的復選框,索引1就是數據庫中的name列 11 } 12 $("#juese").html(str); //將值寫入div中 13 } 14 });

角色的處理頁面的代碼

1 <?php 2 include("DBDA.class.php"); //調用封裝好的數據庫類 3 $db = new DBDA(); //造新對象 4 5 $sql = "select * from juese"; //查詢語句,查詢角色表中的所有信息 6 echo $db->StrQuery($sql); //執行封裝類中的字符串轉換方法 7 ?>

(6)修改完成后就是要保存了,在頁面中寫一個保存按鈕

<input type="button" value="保存" id="save" /> //給這個按鈕起個名字,因為要有點擊事件

?

(7)這樣,在就是怎么讓數據庫中用戶本有的角色顯示出來,那就是要用到下拉列表和復選框的值了

可以把他寫入方法里,然后調用這個方法

1 function Xuan() 2 { 3   var uid = $("#uid").val(); //找到下拉類表的值 4   $.ajax({ 5 url:"admain_cl2.php", //項的處理頁面 6 data:{uid:uid}, 7 type:"POST", 8 dataType:"TEXT", 9 success: function(b){ 10   var hang = b.split("|"); //分割行 11   var ck = $(".ck"); //找到復選項的值 12 13   ck.prop("checked",false); //清理選中 14 15   for(var i=0;i<ck.length;i++) 16   { 17 var zhi = ck.eq(i).val(); //取出選項的值 18 if(hang.indexOf(zhi)>=0) 19 { 20   ck.eq(i).prop("checked",true); //是的話就讓這一項的值選中 21 } 22   } 23 } 24   }) 25 }

(8)項值的處理頁面

1 <?php 2 include("DBDA.class.php"); //調用封裝好的數據庫類 3 $db = new DBDA(); //造新對象 4 5 $uid = $_POST["uid"]; //傳過來的值 6 $sql = "select jueseid from userinjuese where userid='{$uid}'"; //傳過來的值和表中的用戶值相等 7 echo $db->StrQuery($sql); //執行封裝類中的字符串轉換方法 8 ?>

這樣,每個用戶的默認角色就選中了

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

可以直接用全部刪除在重新寫入的方法來進行值的選擇;對保存按鈕添加單擊事件

1 $("#save").click(function(){ 2 var uid = $("#uid").val(); //找到用戶的值 3 var ck = $(".ck"); //選項的值 4 var str = ""; 5 for(var i=0;i<ck.length;i++) 6 { 7 if(ck.eq(i).prop("checked")) //選項的選中狀態 8 { 9 str = str+ck.eq(i).val()+"|"; 10 } 11 } 12 str = str.substr(0,str.length-1); //截取字符串 13 14 $.ajax({ 15 url:"admain_cl3.php", //保存的處理頁面 16 data:{uid:uid,js:str}, //將用戶和項的值傳過去 17 type:"POST", //傳值方式 18 dataType:"TEXT", 19 success: function(data){ 20   if(data.trim()=="OK") 21   { 22 alert("保存成功!"); //保存成功后,彈出框 23   } 24 } 25 }); 26 })

保存的處理頁面

1 <?php 2 include("DBDA.class.php"); //調用的封裝類 3 $db = new DBDA(); //造新對象 4 5 //傳過來的用戶和選項的值 6 $uid = $_POST["uid"]; 7 $js = $_POST["js"]; 8 9 $sdelete = "delete from userinjuese where userid='{$uid}'"; //全部刪除將用戶代號和用戶相等的 10 $db->Query($sdelete,0); //執行語句 11 12 $attr = explode("|",$js); 13 14 foreach($attr as $v) 15 { 16 $sql = "insert into userinjuese values('','{$uid}','{$v}')"; //修改表中的值 17 $db->Query($sql,0); //執行語句 18 } 19 20 echo "OK";

這個管理員的頁面到這也就結束了,整體的看下結果:

1.默認還沒有進行修改的這個用戶

2.進行修改之后的這個用戶,單擊保存后彈出保存成功對話框

? ?

二、管理員頁面弄好之后,就是登陸頁面了,用戶的登錄頁面很簡單,不多說了,直接上代碼

(1)登錄的基本顯示:都是些基本語句

1 <h1>用戶登錄</h1> 2 <div>賬號:<input type="text" id="uid" /></div> 3 <div>密碼:<input type="password" id="pwd" /></div> 4 <div><input type="button" value="登錄" id="btn" /></div>

(2)這里登錄,我們也用ajax進行登錄吧

1 $("#btn").click(function(){ //對登錄按鈕添加單擊事件 2   var uid=$("#uid").val(); //獲取用戶的值 3   var pwd=$("#pwd").val(); //獲取密碼的值 4   $.ajax({ 5 url:"logincl.php", //編寫登錄的處理頁面 6 data:{uid:uid,pwd:pwd}, //將用戶和密碼傳到處理頁面 7 type:"POST", 8 dataType:"text", 9 success: function(data) 10 { 11   if(data.trim()=="OK") 12   { 13     window.location.href="main.php"; //處理頁面執行成功后,跳轉到主頁面 14   } 15   else 16   { 17     alert("用戶名密碼輸入錯誤"); //否則就提示錯誤 18   } 19 } 20   }) 21 })

(3)看下處理頁面的編寫

1 <?php 2 session_start(); //開啟session 3 include("DBDA.class.php"); //調用封裝的類 4 $db = new DBDA(); //造新對象 5 //傳過來的值 6 $uid = $_POST["uid"]; 7 $pwd = $_POST["pwd"];<br>//查詢語句 8 $sql = " select pwd from users where uid='{$uid}' and pwd='{$pwd}' "; 9 //執行語句 10 $attr = $db->Query($sql); 11 if(!empty($pwd) && !empty($attr) && $attr[0][0]==$pwd) 12 { 13 $_SESSION["uid"] = $uid; //session接收用戶值 14 echo "OK"; 15 } 16 else 17 { 18 echo "ON"; 19 } 20 ?>

最后,我們看下最后結果,登錄成功就會進入主頁,登錄失敗會提示錯誤

? ?

三、登錄成功的主頁面:每個用戶的主頁面應該是不一樣的

(1)既然后session,那就先將session開啟

1 <?php 2 session_start(); //開啟session 3 if(empty($_SESSION["uid"])) //判斷session是否為空 4 { 5   header("location:login.php"); //空的話就返回登錄頁面 6 } 7 else 8 { 9   echo $_SESSION["uid"]; //否則就輸出用戶名 10 } 11 ?>

(2)我這里是寫了個表用來裝遍歷出來的功能表:可以給這個表加點樣式

<table id="t" width="7%" cellpadding="0" cellspacing="0" border="1"></table>

(3)ajax傳值了:下面的語句代表什么意思上面用的時候都將了很多遍了,就不重復說明了

1 $.ajax({ 2   url:"main_cl.php", //主頁面的處理頁面 3   dataType:"TEXT", 4   success: function(data){ 5 var hang = data.split("|"); 6 var str = ""; 7 for(var i=0;i<hang.length;i++) 8 { 9   var lie = hang[i].split("^"); 10   str +="<tr><td>"+lie[0]+"</td></tr>"; //因為處理頁面中只找了name,所以索引就是0 11 } 12 $("#t").html(str); //將值寫入表中 13   } 14 })

主頁面的處理頁面

1 <?php 2 session_start(); //開啟session 3 $uid = $_SESSION["uid"]; //接收session傳過來的值 4 include("DBDA.class.php"); 5 $db = new DBDA(); 6 //這個是用到的相關子查詢方法 7 $sql = "select name from rules where code in (select ruleid from juesewithrules where jueseid in (select code from juese where code in (select jueseid from userinjuese where userid='{$uid}')))"; 8 //執行語句 9 echo $db->StrQuery($sql); 10 ?>

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

(1)登錄一個用戶,進入主頁

? ?

(2)看下這個用戶的管理界面是不是有這些功能

? ??

下面是數據庫中的該用戶的信息表:用戶和角色的表、角色表、功能表、角色和功能表

? ?? ???

不難看出,該用戶的登錄成功后的主頁面顯示的是對的

不同用戶登錄的頁面是不一樣的

轉載于:https://www.cnblogs.com/axj1993/p/6593359.html

總結

以上是生活随笔為你收集整理的php权限管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。