• php人员权限管理


    在我们日常工作生活中,经常会用到人员权限管理,什么是人员权限管理呢?就是不同角色的人做不同角色的事,一一对应,各司其职,例如:

    管理层可以在办公系统上拥有什么权限?

    财务有什么权限?

    市场营销人员有什么权限?

    他们各自在一套办公系统中可以拥有哪些功能?我们来看一看:

    首先是要用到五张表:三张主表:用户表、角色表、功能表:

    两张附表:用户角色表、角色功能表:

    第一步选择用户,因为用户不同,角色不同,实现的功能也不同,这里用下拉列表显示,遍历出用户名:

    <h1>用户角色对应</h1>
    <div>请选择用户:
    <select id="user"><!--因为后边要写方法,所以给一个id-->
    <?php
    require "DBDA.class.php";
    $db = new DBDA();
    $sql = "select * from userss";
    $arr = $db->query($sql);
    foreach($arr as $v)
    {
        echo "<option value='{$v[0]}'>{$v[2]}</option>";//取出姓名
    }
    ?>
    </select>
    </div><br />

    第二步就是选择角色了,这里可以用复选框表示,因为一个用户可以有多个角色:

    <div>请选择角色:
        <?php
        $sql = "select * from juese";
        $arr = $db->query($sql);
        foreach($arr as $v)
        {
            echo "<input class='ck' type='checkbox' value='{$v[0]}' />{$v[1]}" ;//因为有许多的角色,所以用复选框,class是为下边的更改保存做准备
        }
        ?>
    </div><br />

    第三步就是给角色添加点击事件,这时引入jqurey就可以了,然后写点击事件:

    function sel()
    {
        var uid = $("#user").val();//获取用户名
        $.ajax({
            url:"guanchuli.php",
            data:{uid:uid},
            type:"POST",
            dataType:"TEXT",
            success: function(data){
                var js = data.trim().split("|");//拆分字符串
                var ck = $(".ck");
                ck.prop("checked",false);//清楚掉选中项
                for(var i=0;i<ck.length;i++)
                {
                    var v = ck.eq(i).val();//取出改掉后的值
                    if(js.indexOf(v)>=0)
                    {
                        ck.eq(i).prop("checked",true);//选中更改后的值
                    }
                }
            }
        })
        
    }

    处理页面:

    <?php
    require "DBDA.class.php";
    $db = new DBDA();
    $uid = $_POST["uid"];
    $sql = "select jueseid from userinjuese where userid='{$uid}'";
    echo $db->strquery($sql);

    效果图:

    第四步是考虑到用户的角色可以更改,所以要添加更改保存功能,让用户可以更改已有角色:

    <input type="button" value="保存" id="baocun" /><!--更改用户角色权限后保存-->

    然后为保存更改写方法:

    sel();
    $("#user").change(function(){
        sel();
    })
    $("#baocun").click(function(){
        var uid =$("#user").val();//找到用户
        var str = "";
        var ck = $(".ck")//取出选项的值
        for(var i=0;i<ck.length;i++)
        {
            if(ck.eq(i).prop("checked"))//添加默认选中项
            {
                str = str + ck.eq(i).val()+",";
            }
        }
            str = str.substr(0,str.length-1);//截取字符串,将逗号去掉
            $.ajax({
                url:"add.php",
                data:{uid:uid,js:str},//将用户名和选项的值传过去
                type:"POST",
                dataType:"TEXT",
                success:function(data){
                    alert("保存成功!");
                }
            })
        })

    保存处理页面:

    <?php
    require "DBDA.class.php";
    $db = new DBDA();
    $uid = $_POST["uid"];
    $js = $_POST["js"];
    
    //清空原有角色
    $sql = "delete from userinjuese where userid = '{$uid}'";
    $db->query($sql,0);
    //添加选中的角色
    $ajs = explode(",",$js);
    
    foreach($ajs as $v)
    {
        $sql = "insert into userinjuese values('','{$uid}','{$v}')";
        $db->query($sql,0);
    }

    看一下保存效果:

    保存前:

    保存后:

    管理页面完成后,我们来写一下登录页面,跟以前一样很简单的登录:

    <body>
    <form action="guandengchuli.php" method="post">
    <div>用户名:<input type="text" name="uid" /></div>
    <div>密码:<input type="password" name="pwd" /></div>
    <input type="submit" value="登录" />
    </form>
    </body>

    登录处理:

    <?php
    session_start();
    $uid = $_POST["uid"];//取出用户名
    $pwd = $_POST["pwd"];//取出密码
    require "DBDA.class.php";
    $db = new DBDA();
    $sql = "select pwd from userss where uid = '{$uid}'";//通过用户名找密码
    $mm = $db->strquery($sql);//字符串取出来就是密码
    if($mm == $pwd && !empty($pwd))//如果密码匹配且不为空
    {
        $_SESSION["uid"] = $uid;//存储的用户名
        header("location:guanmain.php");//返回主页面
    }
    else
    {
        echo "用户名或密码错误!";
    }

    登录后主页面:

    <?php
    session_start();//开启session,用来存储用户
    $uid = "";
    if(empty($_SESSION["uid"]))//如果用户名为空返回登录页面
    {
        header("location:guandenglu.php");
        exit;
    }
    $uid = $_SESSION["uid"];
    require "DBDA.class.php";
    $db = new DBDA();
    $sql = "select *from rules where code in(select distinct ruleid from juesewithrules where jueseid in(select jueseid from userinjuese where userid = '{$uid}') )";//利用子查询分别从三张表中通过各自的id查出所需要的信息
    $arr = $db->query($sql);
    foreach($arr as $v)
    {
        echo "<div code='{$v[0]}' class='list'>{$v[1]}</div>";
    }
    ?>

    然后添加样式就可以了:

    <style type="text/css">
    .list{ width:100px; height:35px; border:1px solid #60F; margin:0px 2px 0px 2px; text-align:center; vertical-align:middle; line-height:35px;}
    </style>

    这样整个权限管理就完成了,看下效果:

    不同人登录后页面不同:

  • 相关阅读:
    小白重装系统步骤总结
    【bzoj3680】平衡点 模拟退火
    【洛谷P4513】小白逛公园
    【POJ3666】Making the Grade 离散化+DP
    【codevs1690】开关灯 线段树
    【POJ2182】Lost Cows 树状数组+二分
    【POJ2676】sudoku 搜索
    【UVA】11400 照明系统设计 排序+dp
    关于二分答案输出误差问题的看法
    Java programming language does not use call by reference for objects!
  • 原文地址:https://www.cnblogs.com/mengshenshenchu/p/6897236.html
Copyright © 2020-2023  润新知