zoukankan      html  css  js  c++  java
  • 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;
    }

    实现的效果,如图:

    我可以选择给哪个用户设置权限,给他一个什么角色,可以是一个,也可以多个,点击确定就在数据库中赋予了该权限。

    例如:马七本身有前台和市场2个角色

    现在,删除前台,增加财务

    那我们看看数据库添加了没有

    马七那项已经改了,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>

    完成的效果,如图:

    显示李四的职能是:

    看看数据库的是不是一样的:

    发现结果是一样的。这样权限管理就做完了。

  • 相关阅读:
    Mysql登录错误:ERROR 1045 (28000): Plugin caching_sha2_password could not be loaded
    Docker配置LNMP环境
    Docker安装mysqli扩展和gd扩展
    Docker常用命令
    Ubuntu常用命令
    单例模式的优缺点和使用场景
    ABP 多租户数据共享
    ABP Core 后台Angular+Ng-Zorro 图片上传
    ERROR Error: If ngModel is used within a form tag, either the name attribute must be set or the form control must be defined as 'standalone' in ngModelOptions.
    AbpCore 执行迁移文件生成数据库报错 Could not find root folder of the web project!
  • 原文地址:https://www.cnblogs.com/shenzikun1314/p/6604867.html
Copyright © 2011-2022 走看看