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

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

肯定要有用户表、还有用户所用的角色、然后就是权限功能表;可是在这里面有关联也就 是会另外有两张相互关联的表,这样也就是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{width: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>

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

  

李四只有这两个功能

我们再看看其他人的

    

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

 

 

php实现人员的权限管理的更多相关文章

  1. php之 人员的权限管理(RBAC)

    1.想好权限管理的作用? 2.有什么权限内容? 3.既然有权限管理那么就会有管理员? 4.登录后每个人员的界面会是不一样的? 一.想好这个权限是什么? 就做一个就像是vip的功能,普通用户和vip用户 ...

  2. php之 人员的权限管理

    1.想好权限管理的作用? 2.有什么权限内容? 3.既然有权限管理那么就会有管理员? 4.登录后每个人员的界面会是不一样的? 一.想好这个权限是什么? 就做一个就像是vip的功能,普通用户和vip用户 ...

  3. php人员权限管理(RBAC)

    在说权限管理前,应该先知道权限管理要有哪些功能: (1).用户只能访问,指定的控制器,指定的方法 (2).用户可以存在于多个用户组里 (3).用户组可以选择,指定的控制器,指定的方法  (4).可以添 ...

  4. php实现人员权限管理(管理员界面)

    控制人员权限用的最多的应该是OA办公自动化系统和像ERP,CRM,CMS这样的管理系统,就是通过控制用户的权限来控制其拥有的角色和功能,比如管理员可以拥有所有权限和功能,前台只能拥有登记和通报信息等. ...

  5. 领域驱动设计实战—基于DDDLite的权限管理OpenAuth.net

    在园子里面,搜索一下“权限管理”至少能得到上千条的有效记录.记得刚开始工作的时候,写个通用的权限系统一直是自己的一个梦想.中间因为工作忙(其实就是懒!)等原因,被无限期搁置了.最近想想,自己写东西时, ...

  6. struts2学习之旅三 权限管理和导航设计

    1,权限管理的db设计和dao实现,尽量简单快速有效: db的设计如下:权限按照角色来赋给用户: 权限对应每一个具体的功能,有菜单级别的,有导航级别的,还有页面级别的功能: 涉及到权限的敏感操作一般都 ...

  7. 简单的Linux的用户权限管理

    企业生产环境用户权限集中管理方案案例 建立中要添加如下的项目经验: 在了解公司业务流程后,提出权限整改解决方案,改进公司超级用户Root权限泛滥的问题. 我首先写好方案后,给老大看,取得老大的支持后, ...

  8. php 简单权限管理实现

    权限管理介绍.与简单实现思想 权限管理 此函数为模块访问权限管理 实现思路为:根据传进来的权限值,进入不同的权限获取区间,然后根据模块名字判断是否有这个模块的访问权限 使用说明:在每一个模块开始之前调 ...

  9. C# EasyUI树形结构权限管理模块

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 本节和大家探讨下C#使用EasyUI树形结构/Tree构 ...

随机推荐

  1. AMD及requireJS

    前面的话 由CommonJS组织提出了许多新的JavaScript架构方案和标准,希望能为前端开发提供统一的指引.AMD规范就是其中比较著名一个,全称是Asynchronous Module Defi ...

  2. Unity之2D Sprite Outline外轮廓效果

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Unity5.3.8f1 Unity提供了2D Object Sprite对象,但是没有提供外轮廓Outline效果的支持 ...

  3. 基于HTML5 Canvas实现用户交互

    很多人都有这样的疑问,基于HTML5 Canvas实现的元素怎么和用户进行交互?在这里我们用到HT for Web(http://www.hightopo.com/guide/guide/core/b ...

  4. GitBook 使用

    介绍 GitBook是一个基于Node.js的命令行工具,可使用 Github/Git和Markdown来制作精美的电子书,GitBook 并非关 Git的教程. 导出格式有PDF.HTML等,需要添 ...

  5. Linux网络原理及基础设,yum管理RPM包

    一:ifconfig命令 1,ifconfig命令的功能:显示所有正在启动的网卡的详细信息或设定系统中网卡的IP地址. 2. 使用ifup和ifdown命令启动和停止网卡(详见linux系统管理P42 ...

  6. web工作过程

    了解浏览器与服务器进行通信和访问的过程 打开浏览器-输入URL地址 当我们访问一个网页时,如http://www.baidu.com,这个网址包含四个部分的内容: 1.第一部分:协议类型:这里是htt ...

  7. centos7.2下编译安装apache2.4

    1.安装编译工具 [root@carl httpd-2.4.25]# yum groupinstall 'Development Tools' 'Server Platform Development ...

  8. HTMLTestRunner测试报告美化

    前言 ​最近小伙伴们在学玩python,,看着那HTMLTestRunner生成的测试报告,左右看不顺眼,终觉得太丑.搜索了一圈没有找到合适的美化报告,于是忍不住自已动手进行了修改,因习惯python ...

  9. 侯捷STL学习(二)

    第六节:容器之分类和各种测试(四) stack不提供iterator操作,破坏了容器的独特性,先进先出. 使用容器multiset(允许元素重复) 内部是红黑树,insert操作就保证了排好了序. 标 ...

  10. 关于echarts使用的常见问题总结

    关于echarts使用的问题总结1.legend图例不显示的问题: 在legend中的data为一个数组项,数组项通常为一个字符串,每一项需要对应一个系列的 name,如果数组项的值与name不相符则 ...