zoukankan      html  css  js  c++  java
  • 人员权限管理

    根据RBAC模型的权限设计思想,建立权限管理系统的核心对象模型.对象模型中包含的基本元素主要有:用户(Users)、用户组(Group)、角色(Role)、控制对象(Resource Class)、访问模式(Access Mode)、操作(Operator)。所以在这里,我们用到了四张数据库中的表格,分别如图所示:

      首先写的是登录页面 通过登录某个账号,然后看到此用户的权限,为了页面的美观,我用到了bootstrap

    先要引进bootstrap 

    <link rel="stylesheet" href="https://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">
        <script src="https://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
        <script src="https://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>
        <style type="text/css">
            *{margin: 0px auto;padding: 0px}
        </style>

         

    复制代码
     1 <div class="panel panel-info" style=" 500px">
     2     <div class="panel-heading">
     3         <h3 class="panel-title">登录</h3>
     4     </div>
     5     <div class="panel-body">
     6        用户名:<input type="text" id="uid"/><br/><br>
     7         密&nbsp;&nbsp;&nbsp;&nbsp;码:<input type="password" id="pwd"/><br>
     8         <input type="button" value="登录" id="btn"/>
     9     </div>
    10 </div>
    复制代码

    登录页面完成后,效果如图所示: 相对来说还算是比较美观的,调一下长度可能效果会更好

    因为是练习,所以我整体用的是ajax,因为我觉得自己的ajax写的不够熟练,而且ajax在用的时候不会刷新页面,这点是比较好的

    复制代码
    <script type="text/javascript">
        $("#btn").click(function(){
    
                var uid=$("#uid").val();   //取出用户名输入框的值
                 var pwd=$("#pwd").val();//取出密码输入框的值
    
                $.ajax({
                         url:"logincl.php",  //登录处理页面
                         data:{uid:uid,pwd:pwd},
                          type:"POST",
                         dataType:"TEXT",
                         success:function(data){
                            if(data.trim()=="OK") //去除空格用trim();
                                {
                                    window.location.href = "main.php";
                                }
                            else{
                                  alert("用户名或者密码错误");
                                }
                        }
                 })
    
             })
    </script>
    复制代码

    登录页面的处理页面如下:

    复制代码
     1 <?php
     2 session_start();
     3 include ("DADB.class.php");
     4 $db=new DADB();
     5 $pwd=$_POST["pwd"];  //先把传递过来的值取到
     6 $uid=$_POST["uid"];
     7 $sql="select pwd from users WHERE uid='{$uid}' ";
     8 $arr=$db->Query($sql);
     9 if($arr[0][0]=$pwd && !empty($pwd))
    10 {
    11     $_SESSION["uid"]=$uid; //把uid的值存储
    12      echo"OK";
    13 }
    14 else{
    15     echo"flase";
    16 }
    复制代码

    这样登录页面完成后,如果输入正确就会进到main.php页面,这个页面主要是用来显示用户扮演的角色所执行的功能的

    复制代码
     1 <script src="jquery-3.1.1.min.js"></script> //因为用的ajax首先要引入的是jquery包
     2 
     3 
     4 <table id="rule" >
     5 
     6 </table>
     7 
     8 </body>
     9 <script type="text/javascript">
    10     $.ajax({
    11         url:"miancl.php",
    12         dataType:"TEXT",
    13         success:function(data)
    14         {
    15            var hang=data.split("|");
    16             str="";
    17             for(var i=0;i<hang.length;i++)
    18             {
    19               var lie=hang[i].split("^");
    20                 str +="<tr><td>"+lie[0]+"</td></tr>";
    21             }
    22             $("#rule").html(str); 
    23 
    24         }
    25 
    26     })
    27 
    28 
    29 </script>
    复制代码

    miancl.php是主页面的处理页面,主要是逻辑方面的问题,我用的是select 套select的方法来写的,还算是比较简单一些

    复制代码
     1 <?php
     2 session_start();
     3 $uid=$_SESSION["uid"];
     4 
     5 include("DADB.class.php");
     6 $db=new DADB();
     7 //查出来的是uid对应的jueseid
     8 //$sql1="SELECT juseid from userinjuese WHERE userid='{$uid}'";
     9 $sql="SELECT name from  rules where code in(select ruleid from juesewithrules
    10 WHERE jueseid in(select jueseid from userinjuese where userid='{$uid}')) ";
    11 
    12 //查询出来的是 功能
    13 echo $db->StrQuery($sql);
    复制代码

     这样就可以把这个小功能完成的呈现出来了

    下面的代码是为了实现管理人员 修改用户的角色的功能,这个实现起来可能要相对麻烦一点点

    复制代码
    <body>
        <div><h3>请选择用户:</h3>
             <select id="xz"></select>
       </div>
    
    <div>
        <h3>请选择角色:</h3>
        <div id="js"></div>
    
    </div>
    <br/><br/>
    <div><input type="button" value="保存" id="btn"/></div>
    </body>
    </html>
    <script type="text/javascript">
    
        //下拉列表的ajax
        $.ajax({
            url:"chuli1.php",
             dataType:"TEXT",
            success:function(data){
               var hang=data.split("|");
                str="";
                for(var i=0;i<hang.length;i++)
                {
                   var  lie=hang[i].split("^");
                    str +="<option value='"+lie[0]+"'>"+lie[2]+"</option>";
                }
                $("#xz").html(str);
            }
        })
       //复选框的
        $.ajax({
            url:"chulijs.php",
            dataType:"TEXT",
            success:function(aa){
    
                var hang=aa.split("|");
                str="";
                for(var i=0;i<hang.length;i++)
                {
                    var  lie=hang[i].split("^");
                    str +="<input class='ck' type='checkbox' value='"+lie[0]+"'/>"+lie[1];
                }
                $("#js").html(str);
            }
        })
    
        $(document).ready(function(e) {
            //选中默认角色
            Xuan();
            //当用户选中变化的时候,去选中相应角色
            $("#xz").change(function(){
                Xuan();
            })
            //点击确定保存角色信息
            $("#btn").click(function(){
                var uid = $("#xz").val();
                var juese = "";   //取jueseid的值
                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:"baocun.php",
                    data:{uid:uid,juese:juese},
                    type:"POST",
                    dataType:"TEXT",
                    success: function(data){
                       if(data.trim()=="OK")
                       {
                           alert("保存成功")
                       }
                    }
    
                });
            })
        });
        //选中默认角色
        function Xuan()
        {
            var uid = $("#xz").val();
            $.ajax({
                url:"lianjie.php",
                data:{uid:uid,},
                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) //indexOf用来判断是不是在juseid是不是在复选框中出现过
                        {
                            ck.eq(i).prop("checked",true);
                        }
                    }
    
                }
            });
        }
    </script>
    复制代码

    chulijs.php页面代码如下:

    1 <?php
    2 include("DADB.class.php");
    3 $db=new DADB();
    4 $sql="select * from juese";
    5 echo $db->StrQuery($sql);

    lianjie.php 页面代码如下:

    复制代码
    1 <?php
    2 $uid=$_POST["uid"];
    3 include("DADB.class.php");
    4 $db=new DADB();
    5 $sql="select jueseid from userinjuese where userid='{$uid}'";
    6 //搜索的是jueseid 是因为之前value的值是主键值
    7 echo $db->StrQuery($sql);
    复制代码

    baocun.php 代码如下:

    复制代码
    <?php
    $uid = $_POST["uid"];
    $juese = $_POST["juese"];
    include("DADB.class.php");
    $db=new DADB();
    $sdel = "delete from userinjuese where userid='{$uid}'"; //在添加之前先把用户之前的功能清除
    $db->Query($sdel,0);
    $arr = explode("|",$juese);
    foreach($arr as $v)
    {
        $sql = "insert into userinjuese values('','{$uid}','{$v}')";
        $db->Query($sql,0);
    }
    echo "OK";
    复制代码

    写到这里就可以把所需要的功能完全实现了

  • 相关阅读:
    Oracle函数如何把符串装换为小写的格式
    Oralce中的synonym同义词
    JS中getYear()的兼容问题
    How to do SSH Tunneling (Port Forwarding)
    所谓深度链接(Deep linking)
    upload size of asp.net
    发一个自动刷网站PV流量的小工具
    解决Visual Studio 2008 下,打开.dbml(LINQ) 文件时,提示"The operation could not be completed." 的问题。
    在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录
    使用SQL语句获取Sql Server数据库的版本
  • 原文地址:https://www.cnblogs.com/zcbing/p/6594671.html
Copyright © 2011-2022 走看看