php 人员权限管理(RBAC)实例(推荐)


Posted in PHP onMay 24, 2017

php-人员权限管理(RBAC)

权限管理可以想做vip的功能,普通用户和vip用户的功能是不一样的,大致会用到五张表:用户表、角色表、功能表,还有他们之间互相关联的表:用户与角色表、角色与功能表

php 人员权限管理(RBAC)实例(推荐)

我用到的五张表如下:

php 人员权限管理(RBAC)实例(推荐)

php 人员权限管理(RBAC)实例(推荐)php 人员权限管理(RBAC)实例(推荐)

php 人员权限管理(RBAC)实例(推荐)php 人员权限管理(RBAC)实例(推荐)

一. 首先写的是管理员页面

1.用下拉列表显示用户名

<div>
  <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>
</div>

php 人员权限管理(RBAC)实例(推荐)

2.因为上面已经造了新对象,所以在显示角色名时直接从SQL语句开始写

<div>请选择角色:
  <?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]}";
  }
  ?>
</div>
<br/>

php 人员权限管理(RBAC)实例(推荐)

3.为了修改权限加一个确认保存按钮

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

php 人员权限管理(RBAC)实例(推荐)

4.这样,再考虑怎么让数据库中用户本有的角色显示出来,那就是要用到下拉列表和复选框的值了

可以把它写入方法里,然后调用这个方法

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);
            }
          }
        }
       
    })
}

5.各项值的处理页面

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

效果如下:

php 人员权限管理(RBAC)实例(推荐)

6.最后就是保存修改后的值了,可以直接用全部删除在重新写入的方法来进行值的选择;对保存按钮添加单击事件

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

7.保存的处理页面

<?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);
}

效果如下:

php 人员权限管理(RBAC)实例(推荐)

php 人员权限管理(RBAC)实例(推荐)

下面代码用来copy用,注意AJAX需要引用Jquery

1.guanli.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>
<script src="../jquery-3.2.0.min.js"></script>
</head>
 
<body>
<h1>用户角色对应</h1>
<div>
  <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>
</div>
<br/>
<div>请选择角色:
  <?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]}";
  }
  ?>
</div>
<br/>
<input type="button" value="保存" id="baocun" />
 
</body>
<script type="text/javascript">
 
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("保存成功!");
        }
    })
  })
   
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);
            }
          }
        }
       
    })
}
</script>
</html>

2.chuli.php

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

3.保存的处理页面 add.php

<?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.登录基本页面 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">
<div>用户名:<input type="text" name="uid" /></div>
<div>密码:  <input type="password" name="pwd" /></div>
<input type="submit" value="登录" />
</form>
</body>
</html>

2.登录处理的页面 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='{$uid}'";
$mm = $db->strquery($sql);
if($mm==$pwd && !empty($pwd))
{
  $_SESSION["uid"] = $uid;
  header("location:main.php");
}
else
{
  echo"输入的用户名或密码有误!";
}

php 人员权限管理(RBAC)实例(推荐)

3.主页面 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='{$uid}'))";
 
$arr = $db->query($sql,1);
foreach($arr as $v)
{
  echo "<div code='{$v[0]}' class='list'>{$v[1]}</div>";
}
 
?>
</body>
</html>

选择登陆张三显示他的权限,效果如下:

php 人员权限管理(RBAC)实例(推荐)

以上这篇php 人员权限管理(RBAC)实例(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
isset和empty的区别
Jan 15 PHP
支持中文字母数字、自定义字体php验证码代码
Feb 27 PHP
PHP实现的封装验证码类详解
Jun 18 PHP
实测在class的function中include的文件中非php的global全局环境
Jul 15 PHP
浅析PHP Socket技术
Aug 02 PHP
php smarty truncate UTF8乱码问题解决办法
Jun 13 PHP
PHP 读取和编写 XML
Nov 19 PHP
CodeIgniter生成静态页的方法
May 17 PHP
PHP中CheckBox多选框上传失败的代码写法
Feb 13 PHP
Yii输入正确验证码却验证失败的解决方法
Jun 06 PHP
PHP curl批处理及多请求并发实现方法分析
Aug 15 PHP
PHP设计模式(观察者模式)
Jul 07 PHP
老生常谈PHP面向对象之命令模式(必看篇)
May 24 #PHP
php实现查询功能(数据访问)
May 23 #PHP
php批量删除操作(数据访问)
May 23 #PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
May 23 #PHP
php出租房数据管理及搜索页面
May 23 #PHP
Yii框架创建cronjob定时任务的方法分析
May 23 #PHP
php注册审核重点解析(数据访问)
May 23 #PHP
You might like
菜鸟学PHP之Smarty入门
2007/01/04 PHP
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
JS模拟多线程
2007/02/07 Javascript
Javascript实现CheckBox的全选与取消全选的代码
2010/07/20 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
jQuery控制TR显示隐藏的三种常用方法
2014/08/21 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
Javascript编写2048小游戏
2015/07/07 Javascript
js实现日历与定时器
2017/02/22 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
实例讲解JavaScript预编译流程
2019/01/24 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
jQuery实现图片下载代码
2019/07/18 jQuery
简单分析js中的this的原理
2019/08/31 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
Vue $emit()不能触发父组件方法的原因及解决
2020/07/28 Javascript
JavaScript array常用方法代码实例详解
2020/09/02 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
微信小程序自定义底部弹出框功能
2020/11/18 Javascript
Python多进程同步简单实现代码
2016/04/27 Python
Python数据预处理之数据规范化(归一化)示例
2019/01/08 Python
pymysql 开启调试模式的实现
2019/09/24 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
python实现可下载音乐的音乐播放器
2020/02/25 Python
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
物业经理求职自我评价
2013/09/22 职场文书
销售口号大全
2014/06/11 职场文书
机关党员进社区活动总结
2014/07/05 职场文书
小学安全教育月活动总结
2014/07/07 职场文书
司机岗位职责说明书
2014/07/29 职场文书
个人委托书范本
2014/09/13 职场文书
党员对十八届四中全会的期盼思想汇报范文
2014/10/17 职场文书
出差报告格式模板
2014/11/06 职场文书
学校教代会开幕词
2016/03/04 职场文书