PHP实现权限管理功能

权限管理系统,它主要是为了给不同的用户设定不同的权限,从而实现不同权限的用户登录之后使用的功能不一样。

首先先看下数据库

总共有5张表,users,roles和roleswork 3张表与另外2张表形成"w"型的关系,也是比较常见的一种权限数据库的方式,首先先做权限的设定,也就是管理层给不同用户设定不同权限。

1.管理员页面RBAC.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>权限管理</title>
        <script src="bootstrap/js/jquery-1.11.2.min.js"></script>
    </head>
    <body>
        <h2>用户与角色管理</h2>
        <div>
            请选择用户:
        <select id="user">
            <?php
            require_once "./DBDA.class.php";
            $db = new DBDA();
            $sql = "select * from users";
            $arr = $db->query($sql,0);
            foreach($arr as $v){
                echo "<option value=‘{$v[0]}‘>{$v[2]}</option>";
            }
            ?>
        </select>
        </div>
        <br />
        <div>
            请选择角色:
            <?php
            $sql = "select * from roles";
            $arr = $db->query($sql,0);
            foreach($arr as $v){
                echo "<input type=‘checkbox‘ class=‘ck‘ value=‘{$v[0]}‘>{$v[1]}";
            }
            ?>
        </div>
        <br />
        <input type="button"  value="确认" id="btn"/>
    </body>
    <script>
        sel(); //选中默认角色
        $("#user").change(function(){       //当用户选中变化的时候,去选中相应角色
            sel();
        })      //点击确定保存角色信息
        $("#btn").click(function(){
            var uid = $("#user").val();
            var ck = $(".ck");
            var role = "";//初始为空
            for(i=0;i<ck.length;i++){
                var v = ck.eq(i).val();
                if(ck.eq(i).prop("checked")){
                    role += ck.eq(i).val()+"|";
                }
            }
            $.ajax({
                type:"POST",
                url:"RBbtnchuli.php",
                data:{uid:uid,role:role},
                dataType:"TEXT",
                success:function(data){
                    alert("修改成功!");
                }
            });
        })      //选中默认角色的封装方法
        function sel(){
            var uid = $("#user").val();
            $.ajax({
                url:"RBchuli.php",
                data:{uid:uid},
                type:"POST",
                dataType:"TEXT",
                success:function(data){
                    var role = data.split("|");
                    var ck = $(".ck");
                    ck.prop("checked",false);
                    for(i=0;i<ck.length;i++){
                        var v = ck.eq(i).val();
                        if(role.indexOf(v)>=0){
                            ck.eq(i).prop("checked",true);
                        }
                    }
                }
            });
        }

    </script>
</html>

2.做管理员的处理页面RBchuli.php

<?php
$uid = $_POST["uid"];
require_once "./DBDA.class.php";
$db = new DBDA();
$sql = "select rolesuid from users_roles where usersuid=‘{$uid}‘";
echo $db->StrQuery($sql,0);

保存角色信息的处理页面RBbtnchuli.php

<?php
$uid = $_POST["uid"];
$role = $_POST["role"];//字符串
$role = substr($role,0,strlen($role)-1);
$arr = explode("|", $role);
require_once "./DBDA.class.php";
$db = new DBDA();
//删除
$sdel = "delete from users_roles where usersuid=‘{$uid}‘";
$db->query($sdel);
//添加
foreach($arr as $v){
	$sql = "insert into users_roles values(0,‘{$uid}‘,‘{$v}‘)";
	$db->query($sql);
}

效果如图:

接下来做的是登录某个账号,查看自己的职能

3.用户登录页面RBlogin.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="bootstrap/js/jquery-1.11.2.min.js"></script>
        <script src="bootstrap/js/bootstrap.min.js"></script>
        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css"/>
    </head>
    <style>
        .title{
            margin-left: 600px;
            margin-top: 150px;
        }
        .quanju{
            margin-left: 450px;
            margin-top: -180px;
        }
        .name,.pwd{
            max-width: 120px;
        }
        .yangshi1{
            margin-top: 200px;
        }
    </style>
    <body>
<form class="form-horizontal" role="form" action="RBloginchuli.php" method="post">
    <h3 class="title">用户登录</h3>
    <div class="quanju">
            <div class="form-group yangshi1">
                <label for="firstname" class="col-sm-2 control-label">用户名:</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control name" name="uid" placeholder="请输入用户名">
                </div>
            </div>
            <div class="form-group yangshi2">
                <label for="lastname" class="col-sm-2 control-label">密码:</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control pwd" name="pwd" placeholder="请输入密码">
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <div class="checkbox">
                        <label>
                        <input type="checkbox">
                        保存密码 </label>
                        <label>
                        <input type="checkbox">
                        下次自动登录 </label>
                    </div>
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <button type="submit" class="btn btn-warning" value="登录" onclick="return login()" >
                    登录
                    </button>

                </div>
            </div>
        </div>
    </form>
    </body>
</html>

4.登录页面的处理页面RBloginchuli.php

<?php
session_start();
$uid = $_POST["uid"];
$pwd = $_POST["pwd"];
require_once "./DBDA.class.php";
$db = new DBDA();
$sql = "select pwd from users where uid=‘{$uid}‘";
$mm = $db->StrQuery($sql,0);
if(!empty($pwd) && $pwd==$mm){
    $_SESSION["uid"] = $uid;
    header("location:RBmain.php");
}else{
    echo "<script>alert(‘用户名或密码有误!‘)</script>";
}

5.最后做用户的主页面RBmain.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>权限主页面</title>
    </head>
    <body>
        <?php
        session_start();
        if(empty($_SESSION["uid"])){
            header("location:RBlogin.php");
            exit;
        }
        $uid = $_SESSION["uid"];

        require_once "./DBDA.class.php";
        $db = new DBDA();
        //子查询
        $sql = "select * from roleswork where code in (select * from roles_roleswork where rolesuid in (select * from users_roles where usersuid=‘{$uid}‘))";
        $arr = $db->query($sql,0);
        foreach($arr as $v){
            echo "<div class=‘menu‘>{$v[1]}</div>";
        }
        ?>

    </body>
</html>

效果如图:

时间: 2024-08-02 05:50:30

PHP实现权限管理功能的相关文章

django项目后台权限管理功能。

对后台管理员进行分角色,分类别管理,每个管理员登录账号后只显示自己负责的权限范围. 创建后台管理数据库 models.py文件内 # 管理员表 class Superuser(models.Model): super_id=models.AutoField(primary_key=True) super_name=models.CharField(max_length=255) super_pwd=models.CharField(max_length=255) role = models.Ma

TP thinkphp 权限管理功能

目前,在tp框架中做权限管理 分rbac(老)与auth(推荐)认证方式: 老的tp版本中封装的是rbac认证: 新一点的都开始使用auth方式管理了.推荐使用此方式: 实现步骤一:引入类库Auth.class.php 实现步骤二:创建数据表 a.菜单表 CREATE TABLE `wifi_admin_nav` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '菜单表', `pid` int(11) unsigned DEFAUL

&lt;测试用例设计&gt;用户及权限管理功能常规测试方法

1)  赋予一个人员相应的权限后,在界面上看此人员是否具有此权限,并以此人员身份登陆,验证权限设置是否正确(能否超出所给予的权限): 2)  删除或修改已经登陆系统并正在进行操作的人员的权限,程序能否正确处理: 3)  重新注册系统变更登陆身份后再登录,看程序是否能正确执行,具有权限是否正确: 4)  在有工作组或角色管理的情况下,删除包含用户的工作组或角色,程序能否正确处理: 5)  不同权限用户登录同一个系统,权限范围是否正确: 6)  覆盖系统所有权限设定: 7)  能否添加信息为空的用户

solr入门之搭建具有安全控制和权限管理功能的SolrCloud集群

结合上次搭建项目和配置安全控制的经验,工程的搭建过程应该如下: 1.搭建zookeeper集群 2.配置solr的jetty启动配置 3.在solr启动配置中增加zk的acl配置信息 4.使用solr配置,启动solrcloud集群将 集群交给zookeeper管理 5.上传相关的配置文件,创建集合 6.上传安全配置文件 7.登录admin界面,查看集群状态及能否访问到zookeeper上的文件 8.添加数据到solrcloud中 9.配置客户端,使用solrj来操作solrcloud(摸索阶段

elk使用x-pack实现安全认证及权限管理功能

1.x-pack介绍: x-pack是一个基于elastic安全的插件包.可以实现安全认证,监控.报表.图形等功能.自elk5.0版本以后集成到elk中 2.特点: 安装方便,灵活.虽然已经集成,但是可以随意的启用或禁用某个功能 3.功能使用: 选项参数值为布尔值.true:启用,false禁用 功能名称:文件配置格式:适用组件 图形展示: xpack.graph.enabled:只使用于kibana组件 报表统计: pack.reporting.enabled:只使用于kibana组件 报警通

玩转Hook——Android权限管理功能揭秘(一)

题记一:各大安全软件公司对此项技术可能都有一定的技术保密,在老东家也不例外,由于种种原因未能参与此项技术研发甚是遗憾,也未能接触到其源码,只能自行研究并与各位共享并探讨一下技术方案,所以在此也提醒各位,由于本文所述均为自己在有限机型上实验的结果,不保证对其他机型上的兼容性,也不保证可能引发的无限重启等技术风险. 题记二:谨以此文献给前同事huzhong.zhongjihong两位大牛,感谢二位对我技术上,尤其是Android Native方面的点拨! 随着Android设备上的隐私安全问题越来越

SpringBoot搭建基于Apache Shiro的权限管理功能

待续 GITHUB github : https://github.com/nbfujx/learn-java-demo/tree/master/Goku.WebService.Simple.Shiro

六、EnterpriseFrameWork框架基础功能之权限管理

回<[开源]EnterpriseFrameWork框架系列文章索引> 从本章开始进入框架的第二块内容“EnterpriseFrameWork框架的基础功能”,包括:权限管理.字典数据管理.报表管理和消息管理四块,这些功能又包括两个版本,Web版和Winform版也就是说有两套界面: 既然开始讲基础功能,顺便说一下EnterpriseFrameWork框架的适用范围,前面也有提到过就是此框架适合中小团队这是一方面,还一方面就是此框架适合行业应用系统软件的开发,你用它做一个“超市库存管理系统”.“

linux文件权限管理与ACL访问控制列表

一.文件属性 1.文件属性: 文件属性操作 chown : change owner  ,设置文件所有者 chgrp : change group  ,设置文件的属组 文件属主修改: chown 格式:chown [OPTION]- [OWNER][:[GROUP]] FILE- 用法: OWNER OWNER:GROUPNAME    (同时修改属主.属组) :GROUPNAME                (默认属主,修改属组) ( 命令中的冒号可用.替换:) chown  –refere