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 相关文章推荐
使用数据库保存session的方法
Oct 09 PHP
php基础知识:控制结构
Dec 13 PHP
php 网页游戏开发入门教程一(webgame+design)
Oct 26 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
Feb 14 PHP
详解WordPress中简码格式标签编写的基本方法
Dec 22 PHP
php简单实现多语言切换的方法
May 09 PHP
Yii数据读取与跳转参数传递用法实例分析
Jul 12 PHP
Yii2实现上下联动下拉框功能的方法
Aug 10 PHP
php版微信公众平台之微信网页登陆授权示例
Sep 23 PHP
Yii2下点击验证码的切换实例代码
Mar 14 PHP
thinkPHP5.0框架环境变量配置方法
Mar 17 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 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 current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
Web程序工作原理详解
2014/12/25 PHP
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
HTML node相关的一些资料整理
2010/01/01 Javascript
基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)
2011/09/02 Javascript
IE事件对象(The Internet Explorer Event Object)
2012/06/27 Javascript
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
JavaScript动态添加列的方法
2015/03/25 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
实例解析Array和String方法
2016/12/14 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
TypeScript中使用getElementXXX()的示例代码
2019/09/12 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
2020/02/25 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
详解Python中的动态属性和特性
2018/04/07 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
python调用百度语音识别api
2018/08/30 Python
Python实现去除图片中指定颜色的像素功能示例
2019/04/13 Python
Django自定义用户登录认证示例代码
2019/06/30 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
Python如何使用OS模块调用cmd
2020/02/27 Python
Python 统计位数为偶数的数字代码详解
2020/03/15 Python
Python二元算术运算常用方法解析
2020/09/15 Python
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
英国女装网上商店:I Saw It First
2018/10/18 全球购物
军人违纪检讨书
2014/02/04 职场文书
干部个人对照检查材料
2014/08/25 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
python-for x in range的用法(注意要点、细节)
2021/05/10 Python
React Fragment介绍与使用详解
2021/11/11 Javascript