PHP实现权限管理功能示例

权限管理系统,它主要是为了给不同的用户设定不同的权限,从而实现不同权限的用户登录之后使用的功能不一样。

首先先看下数据库

总共有5张表,users,roles和roleswork 3张表与另外2张表形成"w"型的关系,也是比较常见的一种权限数据库的方式,首先先做权限的设定,也就是管理层给不同用户设定不同权限。

1.管理员页面RBAC.php

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>权限管理</title>
    <script src="bootstrap/js/jquery-1.11.2.min.js"></script>
  </head>
  <body>
    <h2>用户与角色管理</h2>
    <div>
      请选择用户:
    <select id="user">
      <?php
      require_once "./DBDA.class.php";
      $db = new DBDA();
      $sql = "select * from users";
      $arr = $db->query($sql,0);
      foreach($arr as $v){
        echo "<option value='{$v[0]}'>{$v[2]}</option>";
      }
      ?>
    </select>
    </div>
    <br />
    <div>
      请选择角色:
      <?php
      $sql = "select * from roles";
      $arr = $db->query($sql,0);
      foreach($arr as $v){
        echo "<input type='checkbox' class='ck' value='{$v[0]}'>{$v[1]}";
      }
      ?>
    </div>
    <br />
    <input type="button" value="确认" id="btn"/>
  </body>
  <script>
    sel(); //选中默认角色
    $("#user").change(function(){
       //当用户选中变化的时候,去选中相应角色
      sel();
    })
      //点击确定保存角色信息
    $("#btn").click(function(){
      var uid = $("#user").val();
      var ck = $(".ck");
      var role = "";//初始为空
      for(i=0;i<ck.length;i++){
        var v = ck.eq(i).val();
        if(ck.eq(i).prop("checked")){
          role += ck.eq(i).val()+"|";
        }
      }
      $.ajax({
        type:"POST",
        url:"RBbtnchuli.php",
        data:{uid:uid,role:role},
        dataType:"TEXT",
        success:function(data){
          alert("修改成功!");
        }
      });
    })
      //选中默认角色的封装方法
    function sel(){
      var uid = $("#user").val();
      $.ajax({
        url:"RBchuli.php",
        data:{uid:uid},
        type:"POST",
        dataType:"TEXT",
        success:function(data){
          var role = data.split("|");
          var ck = $(".ck");
          ck.prop("checked",false);
          for(i=0;i<ck.length;i++){
            var v = ck.eq(i).val();
            if(role.indexOf(v)>=0){
              ck.eq(i).prop("checked",true);
            }
          }
        }
      });
    }

  </script>
</html>

2.做管理员的处理页面RBchuli.php

<?php
$uid = $_POST["uid"];
require_once "./DBDA.class.php";
$db = new DBDA();
$sql = "select rolesuid from users_roles where usersuid='{$uid}'";
echo $db->StrQuery($sql,0); 保存角色信息的处理页面RBbtnchuli.php

保存角色信息的处理页面RBbtnchuli.php

<?php
$uid = $_POST["uid"];
$role = $_POST["role"];//字符串
$role = substr($role,0,strlen($role)-1);
$arr = explode("|", $role);
require_once "./DBDA.class.php";
$db = new DBDA();
//删除
$sdel = "delete from users_roles where usersuid='{$uid}'";
$db->query($sdel);
//添加
foreach($arr as $v){
  $sql = "insert into users_roles values(0,'{$uid}','{$v}')";
  $db->query($sql);
}

效果如图:

接下来做的是登录某个账号,查看自己的职能

3.用户登录页面RBlogin.php

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <script src="bootstrap/js/jquery-1.11.2.min.js"></script>
    <script src="bootstrap/js/bootstrap.min.js"></script>
    <link href="bootstrap/css/bootstrap.min.css" rel="external nofollow" rel="stylesheet" type="text/css"/>
  </head>
  <style>
    .title{
      margin-left: 600px;
      margin-top: 150px;
    }
    .quanju{
      margin-left: 450px;
      margin-top: -180px;
    }
    .name,.pwd{
      max-width: 120px;
    }
    .yangshi1{
      margin-top: 200px;
    }
  </style>
  <body>
<form class="form-horizontal" role="form" action="RBloginchuli.php" method="post">
  <h3 class="title">用户登录</h3>
  <div class="quanju">
      <div class="form-group yangshi1">
        <label for="firstname" class="col-sm-2 control-label">用户名:</label>
        <div class="col-sm-10">
          <input type="text" class="form-control name" name="uid" placeholder="请输入用户名">
        </div>
      </div>
      <div class="form-group yangshi2">
        <label for="lastname" class="col-sm-2 control-label">密码:</label>
        <div class="col-sm-10">
          <input type="text" class="form-control pwd" name="pwd" placeholder="请输入密码">
        </div>
      </div>
      <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
          <div class="checkbox">
            <label>
            <input type="checkbox">
            保存密码 </label>
            <label>
            <input type="checkbox">
            下次自动登录 </label>
          </div>
        </div>
      </div>
      <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
          <button type="submit" class="btn btn-warning" value="登录" onclick="return login()" >
          登录
          </button>

        </div>
      </div>
    </div>
  </form>
  </body>
</html>

4.登录页面的处理页面RBloginchuli.php

<?php
session_start();
$uid = $_POST["uid"];
$pwd = $_POST["pwd"];
require_once "./DBDA.class.php";
$db = new DBDA();
$sql = "select pwd from users where uid='{$uid}'";
$mm = $db->StrQuery($sql,0);
if(!empty($pwd) && $pwd==$mm){
  $_SESSION["uid"] = $uid;
  header("location:RBmain.php");
}else{
  echo "<script>alert('用户名或密码有误!')</script>";
}

5.最后做用户的主页面RBmain.php

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>权限主页面</title>
  </head>
  <body>
    <?php
    session_start();
    if(empty($_SESSION["uid"])){
      header("location:RBlogin.php");
      exit;
    }
    $uid = $_SESSION["uid"];

    require_once "./DBDA.class.php";
    $db = new DBDA();
    //子查询
    $sql = "select * from roleswork where code in (select * from roles_roleswork where rolesuid in (select * from users_roles where usersuid='{$uid}'))";
    $arr = $db->query($sql,0);
    foreach($arr as $v){
      echo "<div class='menu'>{$v[1]}</div>";
    }
    ?>

  </body>
</html>

效果如图:

以上就是小编为大家带来的PHP实现权限管理功能示例的全部内容了,希望大家喜欢哦~

如果大家想了解更多游戏活动与游戏攻略,请持续关注本站,本站小编将在第一时间为大家带来最好看、最好玩、最新鲜的游戏资讯。更多精彩内容,尽在jb51游戏频道!

(0)

相关推荐

  • 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实现权限管理功能示例

    权限管理系统,它主要是为了给不同的用户设定不同的权限,从而实现不同权限的用户登录之后使用的功能不一样. 首先先看下数据库 总共有5张表,users,roles和roleswork 3张表与另外2张表形成"w"型的关系,也是比较常见的一种权限数据库的方式,首先先做权限的设定,也就是管理层给不同用户设定不同权限. 1.管理员页面RBAC.php <!DOCTYPE html> <html> <head> <meta charset="UT

  • springboot实战权限管理功能图文步骤附含源码

    目录 前言 功能清单 功能介绍 菜单管理 资源管理 角色管理 后台用户管理 动态菜单控制 动态资源控制 项目源码地址 前言 mall项目的权限管理功能发布啦!权限管理作为后台管理系统的必要功能,mall项目之前的权限管理并不完善.最近我对原先的权限管理进行了重新设计,打造了一套切实可用的权限管理功能. 功能清单 菜单管理:可以实现对后台管理系统左侧菜单的管理,支持更换图标.更换名称.控制菜单显示和排序: 资源管理:实现了基于访问路径的后台动态权限控制,控制的权限可以精确到接口级别: 角色管理:可

  • Vue 指令实现按钮级别权限管理功能

    在项目中经常有需求要根据用户的权限对界面上的元素进行控制,这里介绍了一直简单的实现,仅供参考. 当前用户的权限列表储存在 store 里,也可以是其他地方. 指令 // src/directives/permission.js import Vue from 'vue'; import store from '@/store'; import {get} from '@/utils'; // 是否有权限 const hasPermission = userPermission => { let

  • SpringBoot中整合Shiro实现权限管理的示例代码

    之前在 SSM 项目中使用过 shiro,发现 shiro 的权限管理做的真不错,但是在 SSM 项目中的配置太繁杂了,于是这次在 SpringBoot 中使用了 shiro,下面一起看看吧 一.简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序. 三个核心组件: 1.Subject 即"当前操作用户".但是,在 Shi

  • spring aop实现用户权限管理的示例

    AOP 在实际项目中运用的场景主要有 权限管理(Authority Management).事务管理(Transaction Management).安全管理(Security).日志管理(Logging)和调试管理(Debugging) 等. 问题源于项目开发 最近项目中需要做一个权限管理模块,按照之前同事的做法是在controller层的每个接口调用之前上做逻辑判断,这样做也没有不妥,但是代码重复率太高,而且是体力劳动,so,便有了如题所说的使用spring aop做一个切点来实现通用功能的

  • 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

  • 关于Vue的路由权限管理的示例代码

    前言 曾经在工作上对 vue 路由权限管理这方面有过研究,这几天又看到了几篇相关的文章,再加上昨天电面中又再一次提及到,就索性整理了一下自己的一些看法,希望对大家有帮助. 实现 大体上实现的思路很简单,先上图: 无非是将路由配置按用户类型分割为 用户路由 和 基本路由,不同的用户类型可能存在不同的 用户路由,具体依赖实际业务. 用户路由: 当前用户所特有的路由 基本路由:所有用户均可以访问的路由 实现控制的方式分两种: 通过vue-router addRoutes方法注入路由实现控制 通过vue

  • Vue+Node实现的商城用户管理功能示例

    本文实例讲述了Vue+Node实现的商城用户管理功能.分享给大家供大家参考,具体如下: 1.用户登陆 前端将用户输入的用户名密码post发送到后端,如果返回status=0,代表登陆成功,将hasLogin置为true,控制页面登陆按钮不显示,并显示返回的用户名nickname login(){ if(!this.username||!this.password){ this.errMsg="请输入用户名与密码!"; this.errShow=true; }else{ axios.po

  • SpringBoot2.0整合Shiro框架实现用户权限管理的示例

    GitHub源码地址:知了一笑 https://github.com/cicadasmile/middle-ware-parent 一.Shiro简介 1.基础概念 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.作为一款安全框架Shiro的设计相当巧妙.Shiro的应用不依赖任何容器,它不仅可以在JavaEE下使用,还可以应用在JavaSE环境中. 2.核心角色 1)Subject:认证主体 代表当前系统的使用者,就是用户,在Shiro的认证中,

随机推荐