zoukankan      html  css  js  c++  java
  • php实现人员的权限管理

    权限是指不同的人员登录以后会用不同的页面。

    一、想好这个权限是什么?

    肯定要有用户表、还有用户所用的角色、然后就是权限功能表;可是在这里面有关联也就 是会另外有两张相互关联的表,这样也就是5张表

    在数据库中建好这五张表:

    (1)用户表、角色表、功能表、

         

    (2)主表中的外键关系得两个表:用户与角色表、角色与功能表

       

    二、建好表之后就是开始写代码了,首先是管理员的页面

    可以选择用户,然后根据选择复选框来给他们添加或是删除一些功能

    (1)先可以显示出想要的效果:比如选择可以用下拉列表

    <div>请选择姓名:
    	<select id="user">
        	//给这个起个名字,可以在下面的操作中加事件<br>  //这里是遍历数据库中的用户表<br>
    	</select>
    </div>
    

      看下效果:

    下拉列表中还没有值,是因为还没有进行数据库操作

    (2)链接数据库操作,遍历出数据库中的用户

    <?php
    		require "DBDA.class.php";
    		$db=new DBDA();
    		$sql="select * from users";
    		$arr=$db->query($sql);
    		foreach($arr as $v)
    		{
    			echo "<option value='{$v[0]}'>{$v[2]}</option>";
    		}
        	?>
    

      

    这样下拉框里就有数据了

    (3)用户写好之后,就是角色了,可以使用复选框的方式显示,和上面一样的方法,

    还是先要写个div放这个复选框

    <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]}";
    		}
    	?>
    </div>
    

      

    (4)修改完成后就是要保存了,在页面中写一个保存按钮

    <input type="button" id="baocun" value="保存" />
    

      

    (5)这样,在就是怎么让数据库中用户本有的角色显示出来,那就是要用到下拉列表和复选框的值了

    可以把他写入方法里,然后调用这个方法

    function Sel()
    {
    	var uid=$("#user").val();
    	$.ajax({
    		url:"gaichuli.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);
    					}	
    				}
    			}
    		
    	})	
    }
    

     处理页面

    require "DBDA.class.php";
    $Uid=$_POST["uid"];
    $db=new DBDA();
    $sql="select JueSeId from userinjuese where UserId='{$Uid}'";
    echo $db->StrQuery($sql);
    

     效果:

     

    这样就可以了

    (6)最后就是保存修改后的值了

    可以直接用全部删除在重新写入的方法来进行值的选择;对保存按钮添加单击事件

    $("#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";
    $Uid=$_POST["uid"];
    $js=$_POST["js"];
    $db=new DBDA();
    
    
    //清空原有角色
    $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);
    }
    

     这个管理员的页面到这也就结束了,整体的看下结果:

    这个是默认的

     

    这个是保存后的

    三、管理员页面弄好之后,就是登陆页面了,用户的登录页面很简单。

    (1)登录的基本显示:

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

    (2)这里登录,我们用php进行登录。

    <?php
    session_start();
    
    
    require "DBDA.class.php";
    $db=new DBDA();
    $uid=$_POST["uid"];
    $pwd=$_POST["pwd"];
    $sql="select pwd from users where uid='{$uid}'";
    $mm=$db->StrQuery($sql);
    var_dump($mm);
    if($mm==$pwd && !empty($pwd))
    {
    	$_SESSION["uid"]=$uid;//这里我们将登陆的id保存到session里再登陆成功转到主页面的时候要用到
    	header("location:neirong.php");	
    }
    else
    {
    	echo "用户名或密码错误!";
    }
    

    四、登录成功的主页面:每个用户的主页面应该是不一样的  

     (1)既然用到session,那就先将session开启然后判断

    <?php
    session_start(); //开启session   
    if(empty($_SESSION["uid"]))  //判断session是否为空
    {
      header("location:login.php"); //空的话就返回登录页面           
    }
    else
    {
      echo $_SESSION["uid"];  //否则就输出用户名
    }
    ?>
    

     (2)传值 遍历出来后我用div显示并且我还加了样式

    <?php
    $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}'))";
    $arr=$db->query($sql);
    foreach($arr as $v)
    {
    	echo "<div Code={$v[0]} class='list'>{$v[1]}</div>";	
    }
    ?>
    

      

    <style>
    .list{100px; 
    	  height:35px;
    	  border:1px solid #300;
    	  background-color:#009;
    	  color:#000;
    	  margin:0px 2px 0px 2px;
    	  text-align:center;
    	  vertical-align:middle;
    	  line-height:35px;}
    </style>
    

     最后就是可以登录显示不一样用户权限功能的页面了,看下整体结果: 

      

    李四只有这两个功能

    我们再看看其他人的

        

    他们这些职务是与数据库中相对应的。

     

     

  • 相关阅读:
    HDU 1010 Tempter of the Bone(DFS剪枝)
    HDU 1013 Digital Roots(九余数定理)
    HDU 2680 Choose the best route(反向建图最短路)
    HDU 1596 find the safest road(最短路)
    HDU 2072 单词数
    HDU 3790 最短路径问题 (dijkstra)
    HDU 1018 Big Number
    HDU 1042 N!
    NYOJ 117 求逆序数 (树状数组)
    20.QT文本文件读写
  • 原文地址:https://www.cnblogs.com/douchenchen/p/6894622.html
Copyright © 2011-2022 走看看