PHP实现权限管理功能示例


Posted in PHP onSeptember 22, 2017

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

首先先看下数据库

PHP实现权限管理功能示例PHP实现权限管理功能示例PHP实现权限管理功能示例PHP实现权限管理功能示例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); 
}

效果如图:

PHP实现权限管理功能示例

PHP实现权限管理功能示例

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

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

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

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

PHP 相关文章推荐
php 防止单引号,双引号在接受页面转义
Jul 10 PHP
fleaphp常用方法分页之Pager使用方法
Apr 23 PHP
调整优化您的LAMP应用程序的5种简单方法
Jun 26 PHP
php入门学习知识点五 关于php数组的几个基本操作
Jul 14 PHP
浅析php变量修饰符static的使用
Jun 28 PHP
php自定义加密与解密程序实例
Dec 31 PHP
PHP实用函数分享之去除多余的0
Feb 06 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
Aug 31 PHP
详解php比较操作符的安全问题
Dec 03 PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 PHP
PHP MSSQL 分页实例
Apr 13 PHP
laravel migrate初学常见错误的解决方法
Oct 11 PHP
php生成毫秒时间戳的实例讲解
Sep 22 #PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
Sep 22 #PHP
laravel5.4利用163邮箱发送邮件的步骤详解
Sep 22 #PHP
Laravel中Facade的加载过程与原理详解
Sep 22 #PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 #PHP
深入理解PHP的远程多会话调试
Sep 21 #PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 #PHP
You might like
在PHP中检查PHP文件是否有语法错误的方法
2009/12/23 PHP
php从数组中随机抽取一些元素的代码
2012/11/05 PHP
使用Sphinx对索引进行搜索
2013/06/25 PHP
php的4种常见运行方式
2015/03/20 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
PHP常用header头定义代码示例汇总
2020/08/29 PHP
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
关于JavaScript定义类和对象的几种方式
2010/11/09 Javascript
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
2011/06/27 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
JS开发中基本数据类型具体有哪几种
2017/10/19 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
Python getopt模块处理命令行选项实例
2014/05/13 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
python多进程下的生产者和消费者模型
2020/05/07 Python
python遍历路径破解表单的示例
2020/11/21 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
解决pytorch 数据类型报错的问题
2021/03/03 Python
英国二手物品交易网站:Preloved
2017/10/06 全球购物
垃圾回收的优点和原理
2014/05/16 面试题
日语专业毕业生自荐书
2014/06/18 职场文书
解放思想大讨论活动心得体会
2014/09/11 职场文书
Python趣味挑战之用pygame实现简单的金币旋转效果
2021/05/31 Python
Java获取e.printStackTrace()打印的信息方式
2021/08/07 Java/Android
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
2022/05/25 Servers
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers