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 正则 过滤html 的超链接
Jun 02 PHP
php Xdebug 调试扩展的安装与使用.
Mar 13 PHP
php实现mysql封装类示例
May 07 PHP
PHP实现数字补零功能的2个函数介绍
May 12 PHP
php设计模式之简单工厂模式详解
Sep 04 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
Sep 22 PHP
php递归json类实例
Dec 02 PHP
php实现的美国50个州选择列表实例
Apr 20 PHP
php基于CodeIgniter实现图片上传、剪切功能
May 14 PHP
PHP怎样用正则抓取页面中的网址
Aug 09 PHP
php实现的简单中文验证码功能示例
Jan 03 PHP
laravel5.1 ajax post 传值_token示例
Oct 24 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 curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
2011/04/07 PHP
YII路径的用法总结
2014/07/09 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
浅析PHP7的多进程及实例源码
2019/04/14 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
通过ifame指向的页面高度调整iframe的高度
2006/10/05 Javascript
动态创建样式表在各浏览器中的差异测试代码
2011/09/13 Javascript
javaScript 利用闭包模拟对象的私有属性
2011/12/29 Javascript
JS.elementGetStyle(element, style)应用示例
2013/09/24 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
jQuery中:checkbox选择器用法实例
2015/01/03 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
如何利用模板将HTML从JavaScript中抽离
2016/10/08 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
JS使用tofixed与round处理数据四舍五入的区别
2017/10/25 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
浅谈django model的get和filter方法的区别(必看篇)
2017/05/23 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
纽约手袋品牌:KARA
2018/03/18 全球购物
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
工程现场管理求职自荐信
2013/10/02 职场文书
应征英语教师求职信
2013/11/27 职场文书
5s推行计划书
2014/05/06 职场文书
2014年会计工作总结
2014/11/27 职场文书
2015年个人自我剖析材料
2014/12/29 职场文书
优秀团员个人总结
2015/02/26 职场文书
写给女朋友的检讨书
2015/05/06 职场文书
解决Mysql的left join无效及使用的注意事项说明
2021/07/01 MySQL
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android