Der folgende Editor zeigt Ihnen ein Beispiel für PHP-Personal Berechtigungsverwaltung(RBAC) (empfohlen). Der Herausgeber findet es ziemlich gut, deshalb teile ich es jetzt mit Ihnen und gebe es als Referenz. Folgen wir dem Editor, um einen Blick darauf zu werfen.
php-Personnel Rights Management (RBAC)
Berechtigungsverwaltung kann eine gewöhnliche VIP-Funktion sein Die Funktionen von Benutzern und VIP-Benutzern sind unterschiedlich. Es werden ungefähr fünf Tabellen verwendet: Benutzertabelle, Rollentabelle, Funktionstabelle und miteinander verknüpfte Tabellen: Benutzer- und Rollentabelle, Rolle Mit der Funktionstabelle
Die fünf Tabellen, die ich verwende, sind wie folgt:
1. Das erste, was Sie schreiben müssen, ist die Administratorseite
1. Verwenden Sie die Dropdown-Liste , um den Benutzernamen
<p> <select id="user"> <?php require"../DBDA.class.php"; $db = new DBDA(); $sql = "select * from users"; $arr = $db->query($sql,1); foreach($arr as $v) { echo"<option value='{$v[0]}'>{$v[2]}</option>"; } ?> </select> </p>
<🎜 anzuzeigen >
2. Da oben ein neues Objekt erstellt wurde, schreiben Sie beim Anzeigen des Charakternamens direkt aus der SQL-Anweisung
<p>请选择角色: <?php $sql = "select * from juese"; $arr = $db->query($sql,1); foreach($arr as $v) { echo "<input type='checkbox' class='ck' value='{$v[0]}'/>{$v[1]}"; } ?> </p> <br/>
3. Fügen Sie eine Schaltfläche zum Bestätigen des Speicherns hinzu, um Berechtigungen zu ändern
<input type="button" value="保存" id="baocun" />
4 Überlegen Sie auf diese Weise, wie Sie die ursprüngliche Rolle des Benutzers in der Datenbank anzeigen, dh Der Wert der Dropdown-Liste und des Kontrollkästchens
kann in die Methode geschrieben werden und dann diese Methodefunction Xuan() { var uid = $("#user").val(); $.ajax({ url:"chuli.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); } } } }) }
5. Die Verarbeitungsseite jedes Werts
<?php require"../DBDA.class.php"; $db = new DBDA(); $uid = $_POST["uid"]; $sql = "select jueseid from userinjuese where userid='{$uid}'"; echo $db->strquery($sql);
6. Der letzte Schritt besteht darin, den geänderten Wert zu speichern. Sie können den Wert direkt mit der Methode „Alle löschen und neu schreiben“ auswählen 🎜>7. Die gespeicherte Bearbeitungsseite
Xuan(); $("#user").change(function(){ Xuan(); }) $("#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("保存成功!"); } }) })
hat folgende Wirkung:
<?php require "../DBDA.class.php"; $db = new DBDA(); $uid = $_POST["uid"]; $js = $_POST["js"]; //清空原有角色 $sql = "delete from userinjuese where userid='{$uid}'"; $db->query($sql); //添加选中的角色 $ajs = explode(",",$js); foreach($ajs as $v) { $sql = "insert into userinjuese values('','{$uid}','{$v}')"; $db->query($sql); }
Der folgende Code dient zum Kopieren,
Beachten Sie, dass AJAX auf Jquery verweisen muss
1 .guanli.php
2.chuli.php
无标题文档 用户角色对应
<p> <select id="user"> <?php require"../DBDA.class.php"; $db = new DBDA(); $sql = "select * from users"; $arr = $db->query($sql,1); foreach($arr as $v) { echo"<option value='{$v[0]}'>{$v[2]}</option>"; } ?> </select> </p>
<p>请选择角色: <?php $sql = "select * from juese"; $arr = $db->query($sql,1); foreach($arr as $v) { echo "<input type='checkbox' class='ck' value='{$v[0]}'/>{$v[1]}"; } ?> </p> <br/> <input type="button" value="保存" id="baocun" />
3. Gespeicherte Verarbeitungsseite add.php
<?php require"../DBDA.class.php"; $db = new DBDA(); $uid = $_POST["uid"]; $sql = "select jueseid from userinjuese where userid='{$uid}'"; echo $db->strquery($sql);
2. Nach Abschluss der Administratorseite folgt die Anmeldeseite
<?php require "../DBDA.class.php"; $db = new DBDA(); $uid = $_POST["uid"]; $js = $_POST["js"]; //清空原有角色 $sql = "delete from userinjuese where userid='{$uid}'"; $db->query($sql); //添加选中的角色 $ajs = explode(",",$js); foreach($ajs as $v) { $sql = "insert into userinjuese values('','{$uid}','{$v}')"; $db->query($sql); }
1. Grundlegende Anmeldeseite login.php
2. Anmeldeverarbeitungsseite dlchuli.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body> <h1>登录界面</h1> <form action="dlchuli.php" method="post"> <p>用户名:<input type="text" name="uid" /></p> <p>密码: <input type="password" name="pwd" /></p> <input type="submit" value="登录" /> </form> </body> </html>
<?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); if($mm==$pwd && !empty($pwd)) { $_SESSION["uid"] = $uid; header("location:main.php"); } else { echo"输入的用户名或密码有误!"; }
3. Hauptseite main.php
Wählen Sie die Anmeldung bei Zhang San, um seine Berechtigungen anzuzeigen. Der Effekt ist wie folgt:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <style type="text/css"> .list{ width:100px; height:35px; border:1px solid #36F; margin:0px 2px 0px 2px; text-align:center; vertical-align:middle; line-height:35px;} </style> </head> <body> <h1>主页面</h1> <?php session_start(); $uid =""; if(empty($_SESSION["uid"]))<code class="php comments">//判断session是否为空</code> { header("location:login.php");<code class="php comments">//空的话就返回登录页面</code> exit; } $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,1); foreach($arr as $v) { echo "<p code='{$v[0]}' class='list'>{$v[1]}</p>"; } ?> </body> </html>
Das obige ist der detaillierte Inhalt vonPHP-Beispiel - PHP-Beispiel für Personal Authority Management (RBAC) (empfohlen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!