PHP-Beispiel - PHP-Beispiel für Personal Authority Management (RBAC) (empfohlen)

微波
Freigeben: 2023-03-11 18:52:02
Original
3157 Leute haben es durchsucht

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=&#39;{$v[0]}&#39;>{$v[2]}</option>";
  }
  ?>
  </select>
</p>
Nach dem Login kopieren

<🎜 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=&#39;checkbox&#39; class=&#39;ck&#39; value=&#39;{$v[0]}&#39;/>{$v[1]}";
  }
  ?>
</p>
<br/>
Nach dem Login kopieren


3. Fügen Sie eine Schaltfläche zum Bestätigen des Speicherns hinzu, um Berechtigungen zu ändern

<input type="button" value="保存" id="baocun" />
Nach dem Login kopieren


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 Methode

function 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);
            }
          }
        }
       
    })
}
Nach dem Login kopieren
aufrufen

5. Die Verarbeitungsseite jedes Werts

<?php
require"../DBDA.class.php";
$db = new DBDA();
$uid = $_POST["uid"];
$sql = "select jueseid from userinjuese where userid=&#39;{$uid}&#39;";
echo $db->strquery($sql);
Nach dem Login kopieren
Nach dem Login kopieren
hat folgenden Effekt:

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("保存成功!");
        }
    })
  })
Nach dem Login kopieren

hat folgende Wirkung:

<?php
require "../DBDA.class.php";
$db = new DBDA();
$uid = $_POST["uid"];
$js = $_POST["js"];
 
//清空原有角色
$sql = "delete from userinjuese where userid=&#39;{$uid}&#39;";
$db->query($sql);
 
//添加选中的角色
$ajs = explode(",",$js);
 
foreach($ajs as $v)
{
  $sql = "insert into userinjuese values(&#39;&#39;,&#39;{$uid}&#39;,&#39;{$v}&#39;)";
  $db->query($sql);
}
Nach dem Login kopieren
Nach dem Login kopieren

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=&#39;{$v[0]}&#39;>{$v[2]}</option>"; } ?> </select> </p>
<p>请选择角色: <?php $sql = "select * from juese"; $arr = $db->query($sql,1); foreach($arr as $v) { echo "<input type=&#39;checkbox&#39; class=&#39;ck&#39; value=&#39;{$v[0]}&#39;/>{$v[1]}"; } ?> </p> <br/> <input type="button" value="保存" id="baocun" />
Nach dem Login kopieren

3. Gespeicherte Verarbeitungsseite add.php

<?php
require"../DBDA.class.php";
$db = new DBDA();
$uid = $_POST["uid"];
$sql = "select jueseid from userinjuese where userid=&#39;{$uid}&#39;";
echo $db->strquery($sql);
Nach dem Login kopieren
Nach dem Login kopieren

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=&#39;{$uid}&#39;";
$db->query($sql);
 
//添加选中的角色
$ajs = explode(",",$js);
 
foreach($ajs as $v)
{
  $sql = "insert into userinjuese values(&#39;&#39;,&#39;{$uid}&#39;,&#39;{$v}&#39;)";
  $db->query($sql);
}
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren

<?php
session_start();
 
 
require "../DBDA.class.php";
$db = new DBDA();
$uid = $_POST["uid"];
$pwd = $_POST["pwd"];
$sql = "select pwd from users where uid=&#39;{$uid}&#39;";
$mm = $db->strquery($sql);
if($mm==$pwd && !empty($pwd))
{
  $_SESSION["uid"] = $uid;
  header("location:main.php");
}
else
{
  echo"输入的用户名或密码有误!";
}
Nach dem Login kopieren


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=&#39;{$uid}&#39;))";
 
$arr = $db->query($sql,1);
foreach($arr as $v)
{
  echo "<p code=&#39;{$v[0]}&#39; class=&#39;list&#39;>{$v[1]}</p>";
}
 
?>
</body>
</html>
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!