一般做正规的权限管理程序基本就是以下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]}&nbsp;";
        }
        else
        {
            echo "<input type='checkbox' class='juese' value='{$v[0]}' />{$v[1]}&nbsp;";
        }
    }
    ?><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)的更多相关文章

  1. devops-jenkins基于角色的权限管理RBAC

    一. devops-jenkins基于角色的权限管理RBAC 1 安装角色的rbac角色管理  1.1) 点击系统管理 1.2) 选择插件管理 1.3) 选择可选插件,输入role搜索 1.4) 选择 ...

  2. php人员权限管理(RBAC)

    在说权限管理前,应该先知道权限管理要有哪些功能: (1).用户只能访问,指定的控制器,指定的方法 (2).用户可以存在于多个用户组里 (3).用户组可以选择,指定的控制器,指定的方法  (4).可以添 ...

  3. 详解权限管理(RBAC)的实现方法

    在说权限管理前,应该先知道权限管理要有哪些功能: ().用户只能访问,指定的控制器,指定的方法 ().用户可以存在于多个用户组里 ().用户组可以选择,指定的控制器,指定的方法 ().可以添加控制器和 ...

  4. 权限管理RBAC模型概述

    一.什么是RBAC模型 RBAC模型(Role-Based Access Control:基于角色的访问控制)模型是比较早期提出的权限实现模型,在多用户计算机时期该思想即被提出,其中以美国George ...

  5. Django_用户权限管理rbac

    组成部分 1.初始化权限:login视图initial_permission,把权限信息放入session.initial_permission函数生成权限列表.菜单列表 2.中间件验证权限:在第一次 ...

  6. 权限管理-RBAC

    (一)RBAC 通过用户与角色关联,角色与操作的关联实现用户与操作的关联 (二)权限细分 (三)数据库设计 (四)程序设计 (五)权限与应用程序 (1)应用URL实现程序权限控制 (2)应用code实 ...

  7. Yii的权限管理rbac

    1.首先我们要在配置文件的组件(component)里面配置一下 Rbac 在对应项目下的config/main.php或者config/main-local.php下添加 'authManager' ...

  8. thinkphp权限管理Rbac实例

    首先,先建立Rbac那五张表(用户表,角色表,节点表,权限表,角色-用户表),后面四张可以在thinkphp中Rbac类里直接复制. 第二步,根据需求往那五张表里插入数据,注意:节点表里的节点名称一定 ...

  9. php 人员权限管理(RBAC)

    一.想好这个权限是什么? 就做一个就像是vip的功能,普通用户和vip用户的功能是不一样的,先来考虑一下数据库怎么设计 肯定要有用户表.还有用户所用的角色.然后就是权限功能表:可是在这里面有关联也就 ...

  10. onethink权限管理 RBAC

    查看了官网的视频,写的不错. 大致熟悉了流程.这里打算自己动手写一个权限的控制

随机推荐

  1. MATLAB信号与系统分析(三)——连续信号与系统的复频域分析及MATLAB实现

    一.系统的拉普拉斯变换和反变换 1.MATLAB函数 F=laplace(f) %求拉氏变换 f=ilaplace(F) %求拉氏反变换 2.例子 clear all;clc;close all f= ...

  2. URI和URL的区别

    这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java Bean中定义一些字段,用来表示资源的位置,比如:imgUrl,logoUri等等.但是,每次定义的时候,心里都很纠结,是该用imgU ...

  3. JAVA,JSP新建默认UTF-8

    要让一个 Java 源文件打开时编码格式为 UTF-8,需要做2件事情:1)设置Java 源文件的默认编码格式为UTF-8:2)设置workspace的编码格式为UTF-8. 相应设置如下: 设置 J ...

  4. Java unicode中文编码转换和反转

    参考网址http://www.oschina.net/code/snippet_142385_4297 http://canofy.iteye.com/blog/718659 在java的很多配置文件 ...

  5. BZOJ4348 : [POI2016]Park wodny

    首先特判全部都是A或者全部都是B或者$n=1$的情况. 然后把矩阵四周都填充上A,枚举一个块,分以下情况讨论: 1.在它四周选两个块扩展,此时平方暴力枚举即可. 2.在它四周选定一个方向扩展两步. 3 ...

  6. (转)Hbase shell 常用命令(1)

    Hbase shell 常用命令(1) link:http://blog.csdn.net/scutshuxue/article/details/6988348 下面我们看看HBase Shell的一 ...

  7. BX2001: IE 支持使用 window.clipboardData 访问系统剪贴板,Chrome 和 Safari 中存在类似的 Clipboard 对象但尚未实现,Firefox 和 Opera 不支持这类对象

    http://www.w3help.org/zh-cn/causes/BX2001 标准参考 无 问题描述 IE 支持使用 window.clipboardData 对象内的一系列方法访问系统剪贴板: ...

  8. 【BZOJ】1066: [SCOI2007]蜥蜴(最大流)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1066 本题想一想应该懂了的. 我们想啊,,每个点都有限制,每个点都可以跳到另一个有限制的点,每个有蜥 ...

  9. Hibernate批处理操作优化 (批量插入、更新与删除)

    问题描述 我开发的网站加了个新功能:需要在线上处理表数据的批量合并和更新,昨天下午发布上线,执行该功能后,服务器的load突然增高,变化曲线异常,SA教育了我一番,让我尽快处理,将CPU负载降低. 工 ...

  10. 用C语言实现素数筛法获取一亿(100000000)以内的全部素数

    具体筛法是:先把n个自然数按次序排列起来.1不是质数,也不是合数,要划去.第二个数2是质数留下来,而把2后面所有能被2整除的数都划去.2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数 ...