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

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

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

    MACD(Moving Average Convergence)平滑异同移动平均线 MACD指标有双移动平均线发展而来,由快速移动平均线减去慢速移动平均线,当MACD从负数转向证书,是买入信号,从正数 ...

  2. 每天一道Java题[7]

    题目 什么是REST原则,请解释RESTful架构,以及其设计思想? 解答 REST,全称为Representation State Transfer,是一种互联网软件的架构原则.凡是满足REST原则 ...

  3. Cassandra Issue with Tombstone

    1. Cassandra is quicker than postgre and have lower change to lose data. Cassandra doesn't have fore ...

  4. Centos5搭建vsftpd服务

    更换镜像源 由于centos5已经历史久远,内置的镜像源已经不能用.看: 因此,我手工更换了阿里云的源.(ps:我本来是想用网易的源,但不知为什么,这个源在安装vsftpd时提示http 404错误) ...

  5. 018 关联映射文件中<class>标签中的lazy(懒加载)属性

    Lazy(懒加载): 只有在正真使用该对象时,才会创建这个对象 Hibernate中的lazy(懒加载): 只有我们在正真使用时,它才会发出SQL语句,给我们去查询,如果不使用对象则不会发SQL语句进 ...

  6. Spring Boot 声明式事务结合相关拦截器

    我这项目的读写分离方式在使用ThreadLocal实现的读写分离在迁移后的偶发错误里提了,我不再说一次了,这次是有要求读写分离与事务部分要完全脱离配置文件,程序员折腾了很久,于是我就查了一下,由于我还 ...

  7. jQuery对象的创建(一)

    在jQuery的常规用法中,执行"$()"返回的是一个jQuery对象,在源码中,它是这样定义的: ... var jQuery = function() { return new ...

  8. web socket教程

    web socket是一种网络通信协议,很多网页应用中都会使用到它,比如聊天室,选票等等. 一.为什么需要WebSocket? HTTP是无连接(无连接的含义是限制每次连接只处理一个请求.服务器处理完 ...

  9. C语言之函数

    函数:为了完成某一项功能而编写的代码的集合. C语言中的函数可以分为内置和自定函数. 内置函数:C语言中已经定义过的函数,不需要 声明,可以直接调用. 常见的内置函数: 函数名 类库 说明 doubl ...

  10. .net—— webservice的新建、发布、使用(最全、最简单)【原创】

    网上有很多关于webservice资料,但大部分都不完整,其中还要很大部分是转载的--.这个悲剧了,自己都没试过能不能用就不负责任的转载. 所以今天对webservice的新建.发布.使用最一个全面. ...