人员权限管理
根据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="width: 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 密 码:<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";

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


浙公网安备 33010602011771号