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

php-人员权限管理(RBAC)

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

我用到的五张表如下:

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

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>

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

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

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

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

效果如下:

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

效果如下:

下面代码用来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"输入的用户名或密码有误!";
}

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)实例(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • thinkphp自定义权限管理之名称判断方法

    权限管理,就是给不同的用户分配不同的权限.当用户登录或者操作时候进行判断,来阻止用户进行权限以外的操作.本次讲的是当用户登录一刻,只显示权限开启的内容. 一.建立数据库. 1.权限表funcla.来存储录入所有权限,也是避免因权限名称修改了,权限失效的问题. 2.管理员表admin.主要存储管理员用户名等信息. 3.管理员对应权限表funadmin.主要存储已开启的管理员id与权限id. 二.输出权限列表. 1.通过管理员列表进入权限分配. 2.权限分配列表. 关于权限分配列表,因为权限板块的不

  • php实现简单的权限管理的示例代码

    今天主要来实现一个权限管理系统,它主要是为了给不同的用户设定不同的权限,从而实现不同权限的用户登录之后使用的功能不一样,首先先看下数据库 总共有5张表,qx_user,qx_rules和qx_juese 3张表与另外2张表形成"w"型的关系,也是比较常见的一种权限数据库的方式,首先先做权限的设定,也就是管理层给不同用户设定不同权限. guanli.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/

  • PHP巧妙利用位运算实现网站权限管理的方法

    首先我们先定义4个常量来设定四种权限: ===================================== define(ADD,1);//增加数据库记录的权限 define(UPD,2);//修改数据库记录的权限 define(SEL,4);//查找数据库记录的权限 define(DEL,8);//删除数据库记录的权限 ===================================== 接下来假设有3个用户: A用户拥有ADD-UPD-SEL-DEL四个权限,用位或运算计算A的

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

    php-人员权限管理(RBAC) 权限管理可以想做vip的功能,普通用户和vip用户的功能是不一样的,大致会用到五张表:用户表.角色表.功能表,还有他们之间互相关联的表:用户与角色表.角色与功能表 我用到的五张表如下: 一. 首先写的是管理员页面 1.用下拉列表显示用户名 <div> <select id="user"> <?php require"../DBDA.class.php"; $db = new DBDA(); $sql =

  • 基于Django框架的权限组件rbac实例讲解

    1.基于rbac的权限管理 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,一个角色拥有若干权限.这样,就构造成"用户-角色-权限"的授权模型.在这种模型中,用户与角色之间,角色与权限之间都是多对多的关系. 简单的模型图示如下: 2.Rbac组件的基本目录结构: 3.按照写的流程,来讲解rbac组件中的各个部分,以及功能, 3.1 models数据库表设计(models.py). 为了在

  • 详解利用 Vue.js 实现前后端分离的RBAC角色权限管理

    项目背景:物业管理后台,不同角色拥有不同权限 采用技术:Vue.js + Vuex + Element UI 实现 RBAC 权限管理需要后端接口支持,这里仅提供前端解决方案. 因代码篇幅较大,对代码进行了删减,文中 "..." 即为省略的一部分代码. 大致思路: 首先登录成功后,从后台拉取用户当前可显示的菜单和可用权限列表,分别将其存入 store 的 nav(菜单导航) 和 auth(用户可用权限) 中,在用户切换路由时,判断是否存在 auth ,如果不存在,则重新获取,判断当前访

  • 一款不错的android6.0、7.0权限管理器推荐

    一款不错的android6.0.7.0权限管理器PermissionsCheckerUtil 初始化权限管理器:构造方法 private final Context mContext; public PermissionsCheckerUtil(Context mContext) { this.mContext = mContext; } 判断使用的权限集合是否已经全部允许 // 判断权限集合 public boolean lacksPermissions(String... permissio

  • java中的通用权限管理设计(推荐)

    实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台计算机都已具备的,如果不建立一个完整的权限检测,那么一个"非法用户"很可能就能通过浏览器轻易访问到B/S系统中的所有功能.因此B/S业务系统都需要有一个或多个权限系统来实现访问权限检测,让经过授权的用户可以正常合法的使用已授权功能,而对那些未经授权的"非法用户"将会将他

  • thinkPHP3.2使用RBAC实现权限管理的实现

    在thinkphp3.2中自己集成了RBAC来实现权限管理,RBAC实现类在项目中地址为:ThinkPHP/Librar/Org/Util/Rbac.class.php,其中集成了我们所需的权限管理操作 一:表设计 在thinkPHP的Rbac的的Rbac.class.php文件中一共提供了4张表,还有一张用户表需要你自己去建 如下是我所建的和权限相关的sql 其中的wj_为表前缀,改成你项目中的表前缀 1:权限表: CREATE TABLE IF NOT EXISTS `wj_access`

  • Laravel框架实现的rbac权限管理操作示例

    本文实例讲述了Laravel框架实现的rbac权限管理操作.分享给大家供大家参考,具体如下: 介绍:根据不同的权限,在菜单栏显示不同的功能,只对菜单进行了限制,若对路由也进行限制,请自行完善 1.建表(用户表.角色表.权限表.用户角色表.角色权限表) CREATE TABLE IF NOT EXISTS mr_role ( id int(11) PRIMARY KEY AUTO_INCREMENT COMMENT '自增id', name varchar(30) NOT NULL COMMENT

  • mysql用户权限管理实例分析

    本文实例讲述了mysql用户权限管理.分享给大家供大家参考,具体如下: 本文内容: 什么是用户权限 恰当的用户权限 查看权限 修改权限 删除权限 首发日期:2018-04-19 什么是用户权限: 每个用户都有自己的用户权限,这些用户权限比如有查询表权限.修改表权限.插入表权限.新增用户权限等等. 具体的权限: 恰当的用户权限: 多数用户只需要对表进行读和写,但少数用户甚至需要能创建和删除表: 某些用户需要读表,但可能不需要更新表: 对于大多数用户,应该只提供对表的读写,不应该允许他们创建表.修改

  • vue2/vue3路由权限管理的方法实例

    1. Vue 路由权限控制一般有2种方法 a.路由元信息(meta) b.动态加载菜单和路由(addRoutes) 2 路由元信息(meta)来进行路由权限控制 2.1 在vue2种的实现 如果一个网站有不同的角色,比如 管理员 和 普通用户 ,要求不同的角色能访问的页面是不一样的 这个时候我们就可以 把所有的页面都放在路由表里 ,只要 在访问的时候判断一下角色权限 .如果有权限就让访问,没有权限的话就拒绝访问,跳转到404页面 vue-router 在构建路由时提供了元信息 meta 配置接口

  • mongodb基础之用户权限管理实例教程

    前言 本文主要介绍了mongodb用户权限管理的相关内容,关于接着上次实践的部分,下面话不多说了,来一起看看详细的介绍吧 启动mongodb并连接 ./bin/mongod -f conf/mongod.conf ./bin/mongo 127.0.0.1:12345 查看默认的数据库情况 > show dbs admin 0.000GB local 0.000GB > use admin switched to db admin > show tables system.version

随机推荐