php example-php exemple de gestion des autorités du personnel (RBAC) (recommandé)

微波
Libérer: 2023-03-11 18:52:02
original
3157 Les gens l'ont consulté

L'éditeur ci-dessous vous apportera un exemple de personnel PHP Gestion des autorisations(RBAC) (recommandé). L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur pour y jeter un œil.

php-Personnel Rights Management (RBAC)

La gestion des autorisations peut être utilisée comme fonction VIP , ordinaire Les fonctions des utilisateurs et des utilisateurs VIP sont différentes. Il y a environ cinq tables utilisées : table des utilisateurs, table des rôles, table des fonctions et tables liées les unes aux autres : table des utilisateurs et des rôles, rôle Avec la fonction. table

Les cinq tables que j'utilise sont les suivantes :

1. La première chose à écrire est la page administrateur

1. Utilisez la liste déroulante pour afficher le nom d'utilisateur

<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>
Copier après la connexion


2 Comme un nouvel objet a été créé ci-dessus, lors de l'affichage du nom du personnage, écrivez directement à partir de l'instruction SQL .

<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/>
Copier après la connexion


3. Ajoutez un bouton de confirmation d'enregistrement pour modifier les autorisations

<input type="button" value="保存" id="baocun" />
Copier après la connexion


4. De cette façon, réfléchissez à la manière d'afficher le rôle d'origine de l'utilisateur dans la base de données, c'est-à-dire, utiliser La valeur de la liste déroulante et la case à cocher

peuvent être écrites dans la méthode, puis appeler cette méthode

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);
            }
          }
        }
       
    })
}
Copier après la connexion

5. La page de traitement de chaque valeur

<?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);
Copier après la connexion
Copier après la connexion

a l'effet suivant :

6. La dernière étape consiste à enregistrer la valeur modifiée. Vous pouvez directement utiliser la méthode Supprimer tout et réécrire pour sélectionner la valeur ; ajouter un événement de clic au bouton Enregistrer <🎜. >

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("保存成功!");
        }
    })
  })
Copier après la connexion

7. La page de traitement enregistrée

<?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);
}
Copier après la connexion
Copier après la connexion
a l'effet suivant :

Le code suivant est destiné à la copie,

Notez qu'AJAX doit faire référence à Jquery

1.guanli.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" />
Copier après la connexion

2.chuli.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);
Copier après la connexion
Copier après la connexion

3. Page de traitement enregistrée add.php

<?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);
}
Copier après la connexion
Copier après la connexion

2. Après avoir rempli la page d'administrateur, voici la page de connexion

1. Page de connexion de base login.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>
Copier après la connexion

2. Page de traitement de connexion dlchuli. php

<?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"输入的用户名或密码有误!";
}
Copier après la connexion


3. Page principale main.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>
<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>
Copier après la connexion

Choisissez de vous connecter à Zhang San pour afficher ses autorisations, l'effet est le suivant :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!