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{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实现人员的权限管理的更多相关文章
- php之 人员的权限管理(RBAC)
1.想好权限管理的作用? 2.有什么权限内容? 3.既然有权限管理那么就会有管理员? 4.登录后每个人员的界面会是不一样的? 一.想好这个权限是什么? 就做一个就像是vip的功能,普通用户和vip用户 ...
- php之 人员的权限管理
1.想好权限管理的作用? 2.有什么权限内容? 3.既然有权限管理那么就会有管理员? 4.登录后每个人员的界面会是不一样的? 一.想好这个权限是什么? 就做一个就像是vip的功能,普通用户和vip用户 ...
- php人员权限管理(RBAC)
在说权限管理前,应该先知道权限管理要有哪些功能: (1).用户只能访问,指定的控制器,指定的方法 (2).用户可以存在于多个用户组里 (3).用户组可以选择,指定的控制器,指定的方法 (4).可以添 ...
- php实现人员权限管理(管理员界面)
控制人员权限用的最多的应该是OA办公自动化系统和像ERP,CRM,CMS这样的管理系统,就是通过控制用户的权限来控制其拥有的角色和功能,比如管理员可以拥有所有权限和功能,前台只能拥有登记和通报信息等. ...
- 领域驱动设计实战—基于DDDLite的权限管理OpenAuth.net
在园子里面,搜索一下“权限管理”至少能得到上千条的有效记录.记得刚开始工作的时候,写个通用的权限系统一直是自己的一个梦想.中间因为工作忙(其实就是懒!)等原因,被无限期搁置了.最近想想,自己写东西时, ...
- struts2学习之旅三 权限管理和导航设计
1,权限管理的db设计和dao实现,尽量简单快速有效: db的设计如下:权限按照角色来赋给用户: 权限对应每一个具体的功能,有菜单级别的,有导航级别的,还有页面级别的功能: 涉及到权限的敏感操作一般都 ...
- 简单的Linux的用户权限管理
企业生产环境用户权限集中管理方案案例 建立中要添加如下的项目经验: 在了解公司业务流程后,提出权限整改解决方案,改进公司超级用户Root权限泛滥的问题. 我首先写好方案后,给老大看,取得老大的支持后, ...
- php 简单权限管理实现
权限管理介绍.与简单实现思想 权限管理 此函数为模块访问权限管理 实现思路为:根据传进来的权限值,进入不同的权限获取区间,然后根据模块名字判断是否有这个模块的访问权限 使用说明:在每一个模块开始之前调 ...
- C# EasyUI树形结构权限管理模块
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 本节和大家探讨下C#使用EasyUI树形结构/Tree构 ...
随机推荐
- python3.5 安装lxml
通过xpath 爬虫时,使用到了lxml,通过pip 安装lxml 报错"building 'lxml.etree' extension building 'lxml.etree' ext ...
- php的八大数据类型
1. 八大数据: bool 布尔类型:0,1:真假 integer 整形 float 浮点型 string 字符串 array 数组 object 对象,类,class resource 文件,图片, ...
- 开涛spring3(4.2) - 资源 之 4.2 内置Resource实现
4.2 内置Resource实现 4.2.1 ByteArrayResource ByteArrayResource代表byte[]数组资源,对于“getInputStream”操作将返回一个By ...
- Flight学习(一)
翻看git时看到有新消息提示,点进去第一个就是Flight,那么今天就简单来翻译和了解一下这个框架吧,锻炼下自己的英文文档阅读能力,同时也熟悉下JavaScript.时间太赶,难免出现翻译失误和错误, ...
- 传统平面广告已OUT出局,VR全景异军突起——VR全景智慧城市
VR,近两年异军突起的"黑科技".从1935年斯坦利·温鲍姆首次在小说中描述VR眼镜,到如今PC头盔.VR分体机以及VR一体机的相继问世,VR自身已从虚拟走向现实.而当硬件迭代逐步 ...
- python 列表转字典
def func_data(text): data = dict() for kv in text.split(','): k_v = kv.split(':') data[k_v[0]] = k_v ...
- 前端打包文件在nginx上403的解决办法
遇到的问题表现出来就是如题所述,因此作为题目. 我们知道,前端有很多方便的构建和打包工具,如webpack等,通常我们会把前端文件打包到dist目录下,部署到服务器上,如nginx等. 这次遇到的问题 ...
- mysql之 mysql 5.6不停机主从搭建(一主一从)
环境说明:版本 version 5.6.25-log 主库ip: 10.219.24.25从库ip:10.219.24.22os 版本: centos 6.7已安装热备软件:xtrabackup 防火 ...
- linux 系统备份日志
题目: 备份日志 小明是一个服务器管理员,他需要每天备份论坛数据(这里我们用日志替代),备份当天的日志并删除之前的日志.而且备份之后文件名是年-月-日的格式.alternatives.log在/var ...
- HTTPS系列干货(一):HTTPS 原理详解
HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer),其实 HTTPS 并不是一个新鲜协议,Google 很早就开始启用了,初衷 ...