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


Posted in PHP onAugust 25, 2017

今天主要来实现一个权限管理系统,它主要是为了给不同的用户设定不同的权限,从而实现不同权限的用户登录之后使用的功能不一样,首先先看下数据库

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

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

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

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

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

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

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="../../dist/js/jquery-1.11.2.min.js"></script>
</head>

<body>

<h1>用户与角色管理</h1>
<div>
请选择用户:
  <select id="user">
    <?php
    include("../../fengzhuang/DBDA.class.php");
    $db = new DBDA();
    $sql = "select * from qx_user";
    $arr = $db->Query($sql);
    foreach($arr as $v)
    {
      echo "<option value='{$v[0]}'>{$v[2]}</option>";
    }
    ?>
  </select>
</div>
<br />
<div>
请选择角色:
<?php
$sjs = "select * from qx_juese";
$ajs = $db->Query($sjs);
foreach($ajs as $v)
{
  echo "<input type='checkbox' value='{$v[0]}' class='ck' />{$v[1]} ";
}
?>
</div>
<br />

<input type="button" value="确定" id="btn" />

</body>
<script type="text/javascript">
$(document).ready(function(e) {
  //选中默认角色
  Xuan();
  //当用户选中变化的时候,去选中相应角色
  $("#user").change(function(){
      Xuan();
    })
  //点击确定保存角色信息
  $("#btn").click(function(){
      var uid = $("#user").val();
      var juese = "";
      var ck = $(".ck");
      for(var i=0;i<ck.length;i++)
      {
        if(ck.eq(i).prop("checked"))
        {
          juese += ck.eq(i).val()+"|";
        }
      }
      juese = juese.substr(0,juese.length-1);
      $.ajax({
          url:"chuli.php",
          data:{uid:uid,juese:juese,type:1},
          type:"POST",
          dataType:"TEXT",
          success: function(data){
              alert("保存成功!");
            }
        });
    })
});
//选中默认角色
function Xuan()
{
  var uid = $("#user").val();
  $.ajax({
    url:"chuli.php",
    data:{uid:uid,type:0},
    type:"POST",
    dataType:"TEXT",
    success: function(data){
        var juese = data.trim().split("|");
        var ck = $(".ck");
        ck.prop("checked",false);
        for(var i=0;i<ck.length;i++)
        {
          if(juese.indexOf(ck.eq(i).val())>=0)
          {
            ck.eq(i).prop("checked",true);
          }
        }
        
      }
    });
}
</script>
</html>

chuli.php

<?php
include("../../fengzhuang/DBDA.class.php");
$db = new DBDA();

$type = $_POST["type"];

switch($type)
{
  case 0:
    $uid = $_POST["uid"];
    $sql = "select jueseid from qx_uij where useid='{$uid}'";
    echo $db->StrQuery($sql);
    break;
  case 1:
    $uid = $_POST["uid"];
    $juese = $_POST["juese"];
    $sdel = "delete from qx_uij where useid='{$uid}'";
    $db->Query($sdel,0);
    $arr = explode("|",$juese);
    foreach($arr as $v)
    {
      echo $v;
      $sql = "insert into qx_uij values('','{$uid}','{$v}')";
      $db->Query($sql,0);
    }
    echo "OK";
    break;
}

实现的效果,如图:

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

我可以选择给哪个用户设置权限,给他一个什么角色,可以是一个,也可以多个,点击确定就在数据库中赋予了该权限。

例如:马七本身有前台和市场2个角色

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

现在,删除前台,增加财务

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

那我们看看数据库添加了没有

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

马七那项已经改了,j003和j004就是市场和财务角色。

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

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="logincl.php" method="post">
<input type="text" name="uid" />
<input type="password" name="pwd" />
<input type="submit" value="登录" />
</form>
</body>
</html>

logincl.php

<?php
session_start();
include("../../fengzhuang/DBDA.class.php");
$db = new DBDA();
$uid = $_POST["uid"];
$pwd = $_POST["pwd"];

$sql="select pwd from qx_user where uid='{$uid}'";
$mm = $db->StrQuery($sql); 

if($mm==$pwd && !empty($pwd))
{
  $_SESSION["uid"]=$uid;
  header("location:main.php");
}

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

<body>

<h1>主页面</h1>
<?php
session_start();
include("../../fengzhuang/DBDA.class.php");
$db = new DBDA();

if(empty($_SESSION["uid"]))
{
  header("location:login.php");
  exit;
}
//登录者用户名
$uid = $_SESSION["uid"];


//根据用户名查角色
$sjs = "select jueseid from qx_uij where useid='{$uid}'";
$ajs = $db->Query($sjs);
//定义一个存放功能代号的数组
$arr = array();
//根据角色代号查功能代号
foreach($ajs as $vjs)
{
    $jsid = $vjs[0]; //角色代号
    $sgn = "select ruleid from qx_jwr where jueseid='{$jsid}'";
    $strgn = $db->StrQuery($sgn);
    $agn = explode("|",$strgn);
    
    foreach($agn as $vgn)
    {
      array_push($arr,$vgn);
    }  
}

//去重,显示
$arr = array_unique($arr);
foreach($arr as $v)
{
  $sql = "select * from qx_rules where code='{$v}'";
  $attr = $db->Query($sql);
  
  $attr[0][0]; $attr[0][1];
  
  echo "<div code='{$attr[0][0]}'>{$attr[0][1]}</div>";
}

?>



</body>
</html>

完成的效果,如图:

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

显示李四的职能是:

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

看看数据库的是不是一样的:

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

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

发现结果是一样的。这样权限管理就做完了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP+SQL 注入攻击的技术实现以及预防办法
Jan 27 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
PHP eval函数使用介绍
Dec 08 PHP
php通过数组实现多条件查询实现方法(字符串分割)
May 06 PHP
Smarty中的注释和截断功能介绍
Apr 09 PHP
php session的锁和并发
Jan 22 PHP
PHP内核学习教程之php opcode内核实现
Jan 27 PHP
PHP扩展框架之Yaf框架的安装与使用
May 18 PHP
php封装的图片(缩略图)处理类完整实例
Oct 19 PHP
PHP中的密码加密的解决方案总结
Oct 26 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
Oct 30 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
Aug 25 #PHP
Laravel中前端js上传图片到七牛云的示例代码
Sep 04 #PHP
使用YII2框架实现微信公众号中表单提交功能
Sep 04 #PHP
PHP实现批量重命名某个文件夹下所有文件的方法
Sep 04 #PHP
PHP读取、解析eml文件及生成网页的方法示例
Sep 04 #PHP
PHP钩子与简单分发方式实例分析
Sep 04 #PHP
PHP实现登录注册之BootStrap表单功能
Sep 03 #PHP
You might like
Cannot modify header information错误解决方法
2008/10/08 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
2014/05/07 PHP
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
jQuery 版元素拖拽原型代码
2011/04/25 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
js 处理数组重复元素示例代码
2013/12/27 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
AngularJS入门教程之更多模板详解
2016/08/19 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
JS 调用微信扫一扫功能
2016/12/22 Javascript
微信小程序-获得用户输入内容
2017/02/13 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
用p5.js制作烟花特效的示例代码
2018/03/21 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
Python如何实现守护进程的方法示例
2017/02/08 Python
Python实现的基数排序算法原理与用法实例分析
2017/11/23 Python
使用pycharm生成代码模板的实例
2018/05/23 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
Django接收自定义http header过程详解
2019/08/23 Python
利用python实现冒泡排序算法实例代码
2019/12/01 Python
python 使用建议与技巧分享(四)
2020/08/18 Python
canvas线条的属性详解
2018/03/27 HTML / CSS
创建绿色学校先进个人材料
2014/08/20 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
2014年行政执法工作总结
2014/12/11 职场文书
生日祝酒词大全
2015/08/10 职场文书
致男子1500米运动员的广播稿
2019/11/08 职场文书
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android
MySQL数据库事务的四大特性
2022/04/20 MySQL
Android Studio 计算器开发
2022/05/20 Java/Android