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

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

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

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

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

     

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

   

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

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

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

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

  看下效果:

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

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

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

  

这样下拉框里就有数据了

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

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

  1. <div>请选择角色:
  2. <?php
  3. $sql="select * from juese";
  4. $arr=$db->query($sql);
  5. foreach($arr as $v)
  6. {
  7. echo "<input class='ck' type='checkbox' value={$v[0]} />{$v[1]}";
  8. }
  9. ?>
  10. </div>

  

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

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

  

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

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

  1. function Sel()
  2. {
  3. var uid=$("#user").val();
  4. $.ajax({
  5. url:"gaichuli.php",
  6. data:{uid:uid},
  7. type:"POST",
  8. dataType:"TEXT",
  9. success: function(data){
  10. var js=data.trim().split("|");
  11. var ck=$(".ck");
  12. ck.prop("checked",false);
  13. for(var i=0;i<ck.length;i++)
  14. {
  15. var v=ck.eq(i).val();
  16. if(js.indexOf(v)>=0)
  17. {
  18. ck.eq(i).prop("checked",true);
  19. }
  20. }
  21. }
  22.  
  23. })
  24. }

 处理页面

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

 效果:

 

这样就可以了

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

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

  1. $("#baocun").click(function(){
  2. var uid=$("#user").val();
  3. var str="";
  4. var ck=$(".ck");
  5. for(var i=0;i<ck.length;i++)
  6. {
  7. if(ck.eq(i).prop("checked"))
  8. {
  9. str=str+ck.eq(i).val()+",";
  10. }
  11. }
  12. str=str.substr(0,str.length-1);
  13. $.ajax({
  14. url:"add.php",
  15. data:{uid:uid,js:str},
  16. type:"POST",
  17. dataType:"TEXT",
  18. success: function(data){
  19. alert("保存成功")
  20. }
  21. })
  22. })

 保存的处理页面

  1. <?php
  2. require "DBDA.class.php";
  3. $Uid=$_POST["uid"];
  4. $js=$_POST["js"];
  5. $db=new DBDA();
  6.  
  7. //清空原有角色
  8. $sql="delete from userinjuese where UserId='{$Uid}'";
  9. $db->query($sql,0);
  10.  
  11. //添加选中的角色
  12. $ajs=explode(",",$js);
  13. foreach($ajs as $v){
  14. $sql="insert into userinjuese values('','{$Uid}','{$v}')";
  15. $db->query($sql,0);
  16. }

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

这个是默认的

 

这个是保存后的

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

(1)登录的基本显示:

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

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

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

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

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

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

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

  1. <?php
  2. $uid=$_SESSION["uid"];
  3. require "DBDA.class.php";
  4. $db=new DBDA();
  5. $sql="select * from rules where code in (select distinct ruleid from juesewithrules where jueseid in
  6. (select jueseid from userinjuese where userid='{$uid}'))";
  7. $arr=$db->query($sql);
  8. foreach($arr as $v)
  9. {
  10. echo "<div Code={$v[0]} class='list'>{$v[1]}</div>";
  11. }
  12. ?>

  

  1. <style>
  2. .list{width:100px;
  3. height:35px;
  4. border:1px solid #300;
  5. background-color:#009;
  6. color:#000;
  7. margin:0px 2px 0px 2px;
  8. text-align:center;
  9. vertical-align:middle;
  10. line-height:35px;}
  11. </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. python3.5 安装lxml

    通过xpath 爬虫时,使用到了lxml,通过pip 安装lxml 报错"building 'lxml.etree' extension  building 'lxml.etree' ext ...

  2. php的八大数据类型

    1. 八大数据: bool 布尔类型:0,1:真假 integer 整形 float 浮点型 string 字符串 array 数组 object 对象,类,class resource 文件,图片, ...

  3. 开涛spring3(4.2) - 资源 之 4.2 内置Resource实现

    4.2  内置Resource实现 4.2.1  ByteArrayResource ByteArrayResource代表byte[]数组资源,对于“getInputStream”操作将返回一个By ...

  4. Flight学习(一)

    翻看git时看到有新消息提示,点进去第一个就是Flight,那么今天就简单来翻译和了解一下这个框架吧,锻炼下自己的英文文档阅读能力,同时也熟悉下JavaScript.时间太赶,难免出现翻译失误和错误, ...

  5. 传统平面广告已OUT出局,VR全景异军突起——VR全景智慧城市

    VR,近两年异军突起的"黑科技".从1935年斯坦利·温鲍姆首次在小说中描述VR眼镜,到如今PC头盔.VR分体机以及VR一体机的相继问世,VR自身已从虚拟走向现实.而当硬件迭代逐步 ...

  6. python 列表转字典

    def func_data(text): data = dict() for kv in text.split(','): k_v = kv.split(':') data[k_v[0]] = k_v ...

  7. 前端打包文件在nginx上403的解决办法

    遇到的问题表现出来就是如题所述,因此作为题目. 我们知道,前端有很多方便的构建和打包工具,如webpack等,通常我们会把前端文件打包到dist目录下,部署到服务器上,如nginx等. 这次遇到的问题 ...

  8. mysql之 mysql 5.6不停机主从搭建(一主一从)

    环境说明:版本 version 5.6.25-log 主库ip: 10.219.24.25从库ip:10.219.24.22os 版本: centos 6.7已安装热备软件:xtrabackup 防火 ...

  9. linux 系统备份日志

    题目: 备份日志 小明是一个服务器管理员,他需要每天备份论坛数据(这里我们用日志替代),备份当天的日志并删除之前的日志.而且备份之后文件名是年-月-日的格式.alternatives.log在/var ...

  10. HTTPS系列干货(一):HTTPS 原理详解

    HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer),其实 HTTPS 并不是一个新鲜协议,Google 很早就开始启用了,初衷 ...