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 相关文章推荐
关于Appserv无法打开localhost问题的解决方法
Oct 16 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
Apr 15 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
Jul 08 PHP
PHP开启opcache提升代码性能
Apr 26 PHP
php使用file函数、fseek函数读取大文件效率对比分析
Nov 04 PHP
php实现购物车功能(以大苹果购物网为例)
Mar 09 PHP
Yii输入正确验证码却验证失败的解决方法
Jun 06 PHP
PHP缓存工具XCache安装与使用方法详解
Apr 09 PHP
thinkphp5实现无限级分类
Feb 18 PHP
php ajax confirm 删除实例详解
Mar 06 PHP
PHP实现微信提现功能(微信商城)
Nov 21 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 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
基于mysql的论坛(3)
2006/10/09 PHP
动态生成gif格式的图像要注意?
2006/10/09 PHP
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
php Xdebug的安装与使用详解
2013/06/20 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
PHP开发制作一个简单的活动日程表Calendar
2016/06/20 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
文字不间断滚动(上下左右)实例代码
2013/04/21 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
2013/10/25 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
用jQuery实现可输入多选下拉组合框实例代码
2017/01/18 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
2017/04/26 Javascript
使用vue-aplayer插件时出现的问题的解决
2018/03/02 Javascript
快速搭建vue2.0+boostrap项目的方法
2018/04/09 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
2018/11/05 Javascript
详解vue-cli3多环境打包配置
2019/03/28 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
layui禁用侧边导航栏点击事件的解决方法
2019/09/25 Javascript
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
CSS3中利用animation属性创建雪花飘落特效
2014/05/14 HTML / CSS
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
为什么如下的代码int a=100,b=100;long int c=a * b;不能工作
2013/11/29 面试题
大一学生职业生涯规划
2014/03/11 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
2016消防宣传标语口号
2015/12/26 职场文书
MySQL慢查询优化解决问题
2022/03/17 MySQL