이 글은 주로 PHP의 RBAC 권한에 대한 자세한 설명을 공유합니다. 모든 사람에게 도움이 되기를 바랍니다. 먼저 권한 관리에 필요한 기능이 무엇인지 알아야 합니다.
(1) 사용자는 지정된 컨트롤러에만 액세스할 수 있습니다. 지정된 방법
(2) 사용자는 여러 사용자 그룹에 존재할 수 있습니다
(3) 사용자 그룹은 지정된 컨트롤러와 지정된 방법을 선택할 수 있습니다
(4) 컨트롤러 및 방법을 추가할 수 있습니다
RBAC(Role-Based Access Control(role-Based Access Control) 기반 액세스 제어)는 사용자가 역할을 통해 권한과 연결됨을 의미합니다. 간단히 말해서 사용자에게는 여러 역할이 있고 각 역할에는 여러 권한이 있습니다. 이러한 방식으로 "사용자 역할 권한" 권한 부여 모델이 구성됩니다. 이 모델에서는 일반적으로 사용자와 역할, 역할과 권한 사이에 다대다 관계가 있습니다.
1. 데이터베이스 설계
5개의 테이블을 작성합니다. 먼저 사용자 테이블, 역할 테이블, 기능 테이블:
연결 테이블 테이블.. 그런 다음 역할 기능 테이블 및 사용자 역할 테이블:
2. 관리자 관리 페이지
(1) 드롭다운 사용자 이름 변경에 따라 사용자 이름과 역할 이름을 각각 표시합니다. 해당 체크박스
(3) 사용자의 역할을 수정하는 경우 먼저 해당 사용자의 해당 역할 테이블과 해당 사용자에 대한 모든 정보를 삭제한 후 획득한 사용자 이름과 역할 코드를 추가하세요.
드롭다운 목록 사용: PHP 쿼리를 포함하고 이를 탐색하여 드롭다운 목록으로 표시합니다. 다중 선택 상자:
<select></select>
그림:
사용자가 변경되면 그에 따라 해당 역할도 변경되며, 그 사람의 역할 정보도 변경되며, 기본 아이디어는 추가 및 저장은 먼저 해당 인물을 데이터베이스에 추가하고 해당 역할 정보를 모두 삭제한 후 선택한 부분을 검색하여 데이터베이스에 추가하는 것입니다.
먼저 기본 역할을 선택하도록 합니다.<?php include ("../db.class.php"); $db = new db(); $sql = "select * from qxyh"; $arr = $db->Query($sql); foreach ($arr as $v) { echo "<option>{$v[2]}</option>"; } ?>
다시 와서 저장 버튼:
<p>请选择角色<?php $sjs = "select * from qxzw";$ajs = $db->Query($sjs);foreach ($ajs as $v) { echo "<input>{$v[1]} "; }?> </p> <input>
처리 페이지:
<script> //选中默认角色 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<ck.length;i++) { //便利所有的列表 if(juese.indexOf(ck.eq(i).val())>=0) { ck.eq(i).prop("checked",true); } } } }); }</script>
효과 보기:
기본 선택 문자:
변경 후 저장 선택:
관리 페이지 전체 코드:
코드 보기
처리 전체 페이지 코드:
<?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; }
<script>//当用户变化的时候去选中相应角色 $("#user").change(function(){ xuan(); }) //点击确定保存角色信息 $("#btn").click(function(){ var uid = $("#user").val(); //找到用户名 var juese = "";// 找到角色代号 var ck = $(".ck"); //找到所有的checked for(var i=0;i<ck.length;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("修改成功"); } }); }) });</script>
<?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; }
모든 사람의 메인 페이지는 다릅니다
<?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; }
<form action="drcl.php" method="post"> <p>帐号:<input type="text" name="zhang"/></p> <p>密码:<input type="text" name="mi"/></p> <input type="submit" value="登入"/></form>
<?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 "登入失败"; //}
PHP를 사용하는 사용자 경험은 좋지 않습니다. Ajax를 사용하는 것이 가장 좋습니다.
관련 권장 사항:php 인사 접근 관리(RBAC)
위 내용은 PHP의 RBAC 권한에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!