php example-php personnel authority management (RBAC) example (recommended)

微波
Release: 2023-03-11 18:52:02
Original
3267 people have browsed it

The following editor will bring you an example of PHP personnelPermission management(RBAC) (recommended). The editor thinks it is quite good, so I will share it with you now and give it as a reference for everyone. Let’s follow the editor and take a look.

php-Personnel Rights Management (RBAC)

Permission management can be used as a VIP function, ordinary The functions of users and VIP users are different. There are roughly five tables used: user table, role table, function table, and tables related to each other: user and role table, role And the function table

The five tables I use are as follows:

## 1. The first thing to write is the administrator page

1. Use the drop-down

list to display username

<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>
Copy after login


2. Because a new object has been created above, when displaying the role name, write directly from the SQL statement

<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/>
Copy after login


3. Add a confirm save button to modify permissions

<input type="button" value="保存" id="baocun" />
Copy after login


#4. In this way, consider how to display the user's original role in the database, that is to use

drop-down list and When the value of the check box is determined, you can write it into the method and then call this method

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);
            }
          }
        }
       
    })
}
Copy after login

5. Processing of each value Page

<?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);
Copy after login
Copy after login
The effect is as follows:

6. The last step is to save the modified value, OK Directly use the delete all and rewrite method to select values; add a click event to the save button

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("保存成功!");
        }
    })
  })
Copy after login

7. Save processing page

<?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);
}
Copy after login
Copy after login
The effect is as follows:

##The following code is for copying,

Note that AJAX needs to reference 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" />
Copy after login
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);
Copy after login
Copy after login
3. Saved processing page 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);
}
Copy after login
Copy after login
2. After completing the administrator page, the following is the login page

1. Log in to the basic page 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>
Copy after login
2. Login processing page 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"输入的用户名或密码有误!";
}
Copy after login


3. Main page 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>
Copy after login
Choose to log in to Zhang San to display his permissions. The effect is as follows:

The above is the detailed content of php example-php personnel authority management (RBAC) example (recommended). For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template