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部分常见问题总结
Mar 27 PHP
PHP开发负载均衡指南
Jul 17 PHP
php学习笔记之基础知识
Nov 08 PHP
利用PHP函数计算中英文字符串长度的方法
Nov 11 PHP
php遍历CSV类实例
Apr 14 PHP
7个鲜为人知却非常实用的PHP函数
Jul 01 PHP
php自定义函数实现二维数组按指定key排序的方法
Sep 29 PHP
分享PHP-pcntl 实现多进程代码
Sep 30 PHP
php版银联支付接口开发简明教程
Oct 14 PHP
Python中使用django form表单验证的方法
Jan 16 PHP
PHP JWT初识及其简单示例
Oct 10 PHP
PHP+iframe模拟Ajax上传文件功能示例
Jul 02 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
聊天室php&amp;mysql(二)
2006/10/09 PHP
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
php防止SQL注入详解及防范
2013/11/12 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
2017/02/15 PHP
Textbox控件注册回车事件及触发按钮提交事件具体实现
2013/03/04 Javascript
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
关于删除时的提示处理(确定删除吗)
2013/11/03 Javascript
自写的jQuery异步加载数据添加事件
2014/05/15 Javascript
JQuery中Bind()事件用法分析
2015/05/05 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
2016/09/13 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
Vue的Options用法说明
2020/08/14 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
2020/08/14 Javascript
[36:05]DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs Optic
2018/04/01 DOTA
[01:00] DOTA2英雄背景故事第五期之重力引力法则谜团
2020/07/16 DOTA
常见的在Python中实现单例模式的三种方法
2015/04/08 Python
python读取LMDB中图像的方法
2018/07/02 Python
django 发送邮件和缓存的实现代码
2018/07/18 Python
利用python实现周期财务统计可视化
2019/08/25 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
python em算法的实现
2020/10/03 Python
英国老牌潮鞋店:Offspring
2019/08/19 全球购物
西班牙购买隐形眼镜、眼镜和太阳镜网站:Lentiamo.es
2020/06/11 全球购物
shallow copy和deep copy的区别
2016/05/09 面试题
水产养殖学应届生求职信
2013/09/29 职场文书
文明旅游倡议书
2015/04/28 职场文书
义卖募捐活动总结
2015/05/09 职场文书
会议主持词结束语
2015/07/03 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python
CSS3中Animation实现简单的手指点击动画的示例
2021/07/15 HTML / CSS
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电
利用Python脚本写端口扫描器socket,python-nmap
2022/07/23 Python