权限管理:(RBAC)
一般做正规的权限管理程序基本就是以下M表模式:

例1:在页面显示管理者的权限,并可以修改的管理界面
数据库表如下:





管理界面(附ajax):
<body>
<?php
include("../fzl/czy.class.php");
$db = new czy();
?>
<div>请选择用户:
<select id="sel">
<?php
$sql = "select * from users";
$attr = $db->Query($sql);
foreach($attr as $v)
{
echo "<option value='{$v[0]}'>{$v[2]}<option>";
}
$fuid = $attr[0][0];//页面显示第一个人的用户名
?>
</select>
</div>
<br />
<div>
请选择角色:<br /><br />
<?php
$sjuese = "select * from juese";
$ajuese = $db->Query($sjuese);
foreach($ajuese as $v)
{
$sxz = "select count(*) from userinjuese where userid='{$fuid}' and jueseid = '{$v[0]}'";
$n = $db->strQuery($sxz);
if($n>0)
{
echo "<input type='checkbox' checked='checked' class='juese' value='{$v[0]}' />{$v[1]} ";
}
else
{
echo "<input type='checkbox' class='juese' value='{$v[0]}' />{$v[1]} ";
}
}
?><br /><br />
<input type="button" value="保存" id="btn" />
</div>
</body>
<script type="text/javascript">
//ajax功能:点击下拉选项,相对应的它的功能显示在checkbox中
$("#sel").change(function(){
var uid = $("#sel").val();
$.ajax({
url:"chuli.php",
data:{uid:uid},
type:"POST",
dataType:"TEXT",
success: function(data)
{
var js = data.split("|");
//先把选中状态都清除掉
var ck = $(".juese");
ck.prop("checked",false);
//清完后让处理页面返回的角色代号显示选中在checkbox中
for(var i=0;i<ck.length;i++)
{
if(js.indexOf(ck.eq(i).val())>-1)
{
ck.eq(i).prop("checked",true);
}
}
}
});
})
//ajax功能:选中uid的功能,点击保存,通过数据库的先删除后添加,返回的值再显示在checkbox中
$("#btn").click(function(){
//用户名
var uid = $("#sel").val();
//每个角色代号用"|"分割
var ck = $(".juese");
var str ="";
for(var i=0;i<ck.length;i++)
{
if(ck.eq(i).prop("checked"))
{
str+=ck.eq(i).val()+"|";
}
}
//截取最后一个"|"
str = str.substr(0,str.length-1);
$.ajax({
url:"add.php",
data:{uid:uid,juese:str},
type:"POST",
dataType:"TEXT",
success: function(data)
{
alert("保存成功");
}
});
})
</script>
显示功能处理界面:
<?php
include("../fzl/czy.class.php");
$db = new czy();
$uid = $_POST["uid"];
$sql = "select jueseid from userinjuese where userid='{$uid}'";
echo $db->strQuery($sql);
先删除后添加checkbox的处理界面:
<?php
include("../fzl/czy.class.php");
$db = new czy();
$uid = $_POST["uid"];
$juese = $_POST["juese"];
//根据传过来的字符串,根据“|”拆分到数组中
$attr = explode("|",$juese);
//根据$uid删除userinjuese表中所有用户的角色信息
$sdel = "delete from userinjuese where userid='{$uid}'";
$db->Query($sdel,0);
//再将取到的角色信息添加到userinjuese表中
foreach($attr as $v)
{
$sql = "insert into userinjuese values('','{$uid}','{$v}')";
$db->Query($sql,0);
}
例2:登录界面:(用户可通过登录连接到显示自己权限功能的界面操作)
登录界面:
<body> <form action="loginchuli.php" method="post"> <div>用户名:<input type="text" name="uid" /></div> <div>密码:<input type="password" name="pwd" /></div> <input type="submit" value="登录" /><br /> </form> </body>
登录处理界面:
<?php
session_start();
include("../fzl/czy.class.php");
$db = new czy();
$uid = $_POST["uid"];
$pwd = $_POST["pwd"];
$sql = "select pwd from users where uid='{$uid}'";
$mm = $db->StrQuery($sql);
if($mm==$pwd && $pwd!="")
{
$_SESSION["uid"] = $uid;
header("location:main.php");
}
else
{
echo "登录失败!";
}
管理主页面:

<style type="text/css">
*{ margin:0px auto; padding:0px}
.list{ width:100px; height:35px; background-color:#66C; color:white; text-align:center; line-height:35px; vertical-align:middle; float:left}
</style>
</head>
<?php
session_start();
include("../fzl/czy.class.php");
$db = new czy();
if(empty($_SESSION["uid"]))
{
header("loaction:login.php");
exit;
}
$uid = $_SESSION["uid"];
?>
<body>
<div style="width:100%; height:35px;">
<?php
//根据用户名查角色代号
$sjuese = "select jueseid from userinjuese where userid ='{$uid}'";
$ajuese = $db->Query($sjuese);
//根据角色代号查功能
$attr = array();
foreach($ajuese as $v)
{
$sgn = "select ruleid from juesewithrules where jueseid='{$v[0]}'";
$agn = $db->Query($sgn);
$attr = array_merge($attr,$agn);//根据角色名称找到的每条功能数组都合并到数组$attr里面
}
$attr = array_unique($attr,SORT_REGULAR);//对数组中重复的数据去重[SORT_REGULAR(手册指不改变类型)]
foreach($attr as $v)
{
$sname = "select name from rules where code='{$v[0]}'";
$name = $db->strQuery($sname);
echo "<div class='list'>{$name}</div>";
}
?>
</div>
</body>
权限管理:(RBAC)的更多相关文章
- devops-jenkins基于角色的权限管理RBAC
一. devops-jenkins基于角色的权限管理RBAC 1 安装角色的rbac角色管理 1.1) 点击系统管理 1.2) 选择插件管理 1.3) 选择可选插件,输入role搜索 1.4) 选择 ...
- php人员权限管理(RBAC)
在说权限管理前,应该先知道权限管理要有哪些功能: (1).用户只能访问,指定的控制器,指定的方法 (2).用户可以存在于多个用户组里 (3).用户组可以选择,指定的控制器,指定的方法 (4).可以添 ...
- 详解权限管理(RBAC)的实现方法
在说权限管理前,应该先知道权限管理要有哪些功能: ().用户只能访问,指定的控制器,指定的方法 ().用户可以存在于多个用户组里 ().用户组可以选择,指定的控制器,指定的方法 ().可以添加控制器和 ...
- 权限管理RBAC模型概述
一.什么是RBAC模型 RBAC模型(Role-Based Access Control:基于角色的访问控制)模型是比较早期提出的权限实现模型,在多用户计算机时期该思想即被提出,其中以美国George ...
- Django_用户权限管理rbac
组成部分 1.初始化权限:login视图initial_permission,把权限信息放入session.initial_permission函数生成权限列表.菜单列表 2.中间件验证权限:在第一次 ...
- 权限管理-RBAC
(一)RBAC 通过用户与角色关联,角色与操作的关联实现用户与操作的关联 (二)权限细分 (三)数据库设计 (四)程序设计 (五)权限与应用程序 (1)应用URL实现程序权限控制 (2)应用code实 ...
- Yii的权限管理rbac
1.首先我们要在配置文件的组件(component)里面配置一下 Rbac 在对应项目下的config/main.php或者config/main-local.php下添加 'authManager' ...
- thinkphp权限管理Rbac实例
首先,先建立Rbac那五张表(用户表,角色表,节点表,权限表,角色-用户表),后面四张可以在thinkphp中Rbac类里直接复制. 第二步,根据需求往那五张表里插入数据,注意:节点表里的节点名称一定 ...
- php 人员权限管理(RBAC)
一.想好这个权限是什么? 就做一个就像是vip的功能,普通用户和vip用户的功能是不一样的,先来考虑一下数据库怎么设计 肯定要有用户表.还有用户所用的角色.然后就是权限功能表:可是在这里面有关联也就 ...
- onethink权限管理 RBAC
查看了官网的视频,写的不错. 大致熟悉了流程.这里打算自己动手写一个权限的控制
随机推荐
- C#学习笔记(六)——面向对象编程简介
一.面向对象编程的含义 * 是一种模块化编程方法,使代码的重用性大大的增加. * oop技术使得项目的设计阶段需要的精力大大的增加,但是一旦对某种类型的数据表达方式达成一致,这种表达方式就可以 ...
- LoadRunner11支持的浏览器小结
LoadRunner11录制脚本时不能打开IE浏览器,解决方案有以下几个步骤: l LoadRunner11支持的浏览器版本最高是ie9,把浏览器版本换成ie9; l 打开IE选项----高级—去 ...
- 7.xmpp版即时聊天
即时聊天的解决方案 socket: xmpp:xmpp+openfire+asmack 环信 常见协议 比较安全,tcp上还加了俩层 简单聊一下socket socket:套接字,连接需要ip和端口, ...
- ZOJ 3603 DP LCS
已经5年没有做OJ了, 曾经沧海难为水,除去巫山不是云" 准备每周刷1-2题! 题目大意:给出N个字符串,且各个字符串都包含唯一的字母,即不存在"ABCA"(A重复了), ...
- Flo's Restaurant[HDU1103]
Flo's Restaurant Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- Java集合的线程安全用法
线程安全的集合包含2个问题 1.多线程并发修改一 个 集合 怎么办? 2.如果迭代的过程中 集合 被修改了怎么办? a.一个线程在迭代,另一个线程在修改 b.在同一个线程内用同一个迭代器对象进行迭代. ...
- 20145315 《Java程序设计》实验三实验报告
实验三 敏捷开发与XP实践 实验内容 下载并学会使用git上传代码: 与同学结对,相互下载并更改对方代码,并上传: 实现代码的重载. 实验步骤 下载并用git上传代码: 1.下载并安装好git,在cm ...
- 【BZOJ】1076: [SCOI2008]奖励关(状压dp+数学期望)
http://www.lydsy.com/JudgeOnline/problem.php?id=1076 有时候人蠢还真是蠢.一开始我看不懂期望啊..白书上其实讲得很详细的,什么全概率,全期望(这个压 ...
- oracle系列--第二篇 oracle下载
对于很多新手来说,包括我之前也是这样,知道oracle数据库,但是就是不知道在哪里下载.有时候,上到oracle官方网站上面都找不到下载的地方. 这不像apache里面那么直接,我们想下载如:tomc ...
- for循环下九九乘法表
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...