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

歡迎訪問 生活随笔!

生活随笔

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

php

php注解rbac,PHP的RBAC权限详解

發布時間:2024/2/28 php 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php注解rbac,PHP的RBAC权限详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文主要和大家分享PHP的RBAC權限詳解,希望能幫助到大家,首先我們應該先知道權限管理要有哪些功能:

(1)、用戶只能訪問,指定的控制器,指定的方法

(2)、用戶可以存在于多個用戶組里

(3)、用戶組可以選擇,指定的控制器,指定的方法

(4)、可以添加控制器和方法

RBAC(Role-Based Access Control,基于角色的訪問控制),就是用戶通過角色與權限進行關聯。簡單地說,一個用戶擁有若干角色,每一個角色擁有若干權限。這樣,就構造成“用戶-角色-權限”的授權模型。在這種模型中,用戶與角色之間,角色與權限之間,一般者是多對多的關系。

1.數據庫的設計

寫五張表,首先:用戶表、角色表、功能表:

連接表的表..再來就是角色功能表與用戶角色表:

2.管理員的管理頁面,

(1).分別顯示用戶名和角色名

(2).根據下拉用戶名的變化,更改相應復選框中的角色

(3).修改用戶角色時,先要把用戶對應角色表,這個用戶所有的信息刪除,再把取到的用戶名和角色代號新添加。

利用下拉列表:嵌入php查詢并遍歷出來,以下拉列表的方式顯示出來

<?php include ("../db.class.php"); $db = new db(); $sql = "select * from qxyh"; $arr = $db->Query($sql); foreach ($arr as $v)

{ echo "{$v[2]}";

} ?>

選擇角色,用多選框:

請選擇角色<?php $sjs = "select * from qxzw";$ajs = $db->Query($sjs);foreach ($ajs as $v)

{ echo "{$v[1]} ";

}?>

圖:

當用戶發生變化的時候,相應的角色也相應變化,并且改變人員的角色信息,添加保存,添加保存的基本思路是先把數據庫里人員對應的角色信息全部刪除,然后再取到選中的部分,添加到數據庫。

先來讓他選中默認角色:

function xuan()

{ var uid = $("#user").val();

$.ajax({

url:"chuli.php",

data:{uid:uid,type:0},

type:"POST",

dataType:"TEXT",

success:function(data)

{ var juese = data.trim().split("|"); //拆分完全都變成代號

var ck = $(".ck");

ck.prop("checked",false); for(var i=0;i

{ //便利所有的列表

if(juese.indexOf(ck.eq(i).val())>=0)

{

ck.eq(i).prop("checked",true);

}

}

}

});

}

來寫他的處理頁面:<?phpinclude ("../db.class.php");$db = new db();$type = $_POST["type"];switch ($type)

{ case 0: $uid = $_POST["uid"]; $sql = "select jid from qxyhzw WHERE uid='{$uid}'"; echo $db->strQuery($sql);break;

}

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

再來,保存按鈕:

$("#user").change(function(){

xuan();

}) //點擊確定保存角色信息

$("#btn").click(function(){ var uid = $("#user").val(); //找到用戶名

var juese = "";// 找到角色代號

var ck = $(".ck"); //找到所有的checked

for(var i=0;i

{// 遍歷他

if(ck.eq(i).prop("checked"))

{// 如果他選中了,兩個參數是改他的狀態

//娶過來值;加個|分割一下

juese += ck.eq(i).val()+"|";

}

}

juese = juese.substr(0,juese.length-1);// 去掉最后的| $.ajax({

url:"chuli.php",

data:{uid:uid,juese:juese,type:1},

type:"POST",

dataType:"TEXT",

success:function(data){

alert("修改成功");

}

});

})

});

處理頁面:<?phpinclude ("../db.class.php");$db = new db();$type = $_POST["type"];switch ($type)

{

case 1: $uid = $_POST["uid"]; $juese = $_POST["juese"]; // 首先全部刪掉里面的職位

$sdel = "delete from qxyhzw WHERE uid = '{$uid}'"; $db->Query($sdel,0); //拆分取到的字符串

$arr= explode("|",$juese); foreach ($arr as $v)

{ $sql = "insert into qxyhzw VALUES ('','{$uid}','{$v}')"; $db->query($sql,0);

} echo "ok"; break;

}

看效果:

默認選中角色;

更改以后選擇保存:

管理頁面總代碼:

View Code

處理頁面總代碼:<?phpinclude ("../db.class.php");$db = new db();$type = $_POST["type"];switch ($type)

{ case 0: $uid = $_POST["zhang"]; $sql = "select jid from qxyhzw WHERE uid='{$uid}'"; echo $db->strQuery($sql);break; case 1: $uid = $_POST["zhang"]; $juese = $_POST["juese"]; // 首先全部刪掉里面的職位

$sdel = "delete from qxyhzw WHERE uid = '{$uid}'"; $db->Query($sdel,0); //拆分取到的字符串

$arr= explode("|",$juese); foreach ($arr as $v)

{ $sql = "insert into qxyhzw VALUES ('','{$uid}','{$v}')"; $db->query($sql,0);

} echo "ok"; break;

}

3.登入頁面:

顯示很簡單:

帳號:

密碼:

寫登入處理<?phpsession_start ();include ("../db.class.php");$db = new db();$zhang = $_POST["zhang"];$mi = $_POST["mi"];$sql = "select mi from qxyh WHERE zhang = '{$zhang}'";$mm = $db->strQuery($sql)>0;if($mm = $mi && !empty($mi))

{ $_SESSION["zhang"] = $zhang; header("location:chaxun.php");

}//else

//{

// echo "登入失敗";

//}

跳轉到主頁面,主頁面代碼:

每個人的主頁面都是不一樣的

主頁面

<?phpsession_start ();include ("../db.class.php");$db = new db();$zhang = "";if(empty($_SESSION["zhang"]))

{ header("location:qx_dr.php"); exit;

}//登入者用戶名

$zhang = $_SESSION["zhang"];//根據用戶名查角色$sql = "select jid from qxyhzw WHERE uid = '{$zhang}'";$aql = $db->Query($sql);//根據角色代號查功能代號$attr = array();//定義一個存放功能代號的數組foreach ($aql as $v)

{ $jsid = $v[0];// 角色代號

$ssql = "select rid from qxgnzw WHERE jid='{$jsid}'"; $aaql = $db->strQuery($ssql);//拆分

$adai = explode("|",$aaql); foreach ($adai as $h)

{ array_push($attr,$h);

}

}$attr = array_unique($attr);//去重

//顯示foreach ($attr as $k)

{ $ql = "select * from qxgn WHERE code = '{$k}'"; $arr = $db->Query($ql); $arr[0][0]; $arr[0][1]; echo "

{$arr[0][1]}

";

}?>

用php的用戶體驗不好,最好還是得用ajax。

相關推薦:

php人員權限管理(RBAC)

總結

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

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