php 用户授权访问控制,用户权限访问控制功能

摘要:<?php

namespace app\admins\controller;

use think\Controller;

use Util\SysDb;

class Home extends Base{

public function index(){

&nbs<?php

namespace app\admins\controller;

use think\Controller;

use Util\SysDb;

class Home extends Base{

public function index(){

$role = $this->db->table('admin_groups')->where(array('gid'=>$this->_admin['gid']))->item();

if($role){

$role['rights'] = $role['rights']?json_decode($role['rights'],true):[];

}

if($role['rights']){

$where = 'mid in('.implode(',', $role['rights']).') and ishidden=0 and status=0';

$menus = $this->db->table('admin_menus')->where($where)->cates('mid');

$menus && $menus = $this->gettreeitems($menus);

}

$data['menus'] = $menus;

$data['role'] = $role;

return $this->fetch('',$data);

}

public function welcome(){

return $this->fetch();

}

private function gettreeitems($items){

$tree = [];

foreach ($items as $item) {

if(isset($items[$item['pid']])){

$items[$item['pid']]['children'][] = &$items[$item['mid']];

}else{

$tree[] = &$items[$item['mid']];

}

}

return $tree;

}

}html>

欢迎

body{margin: 0px;}

.header{width: 100%;height: 50px;line-height: 50px;background: #01AAED;color:#ffffff;}

.title{margin-left: 20px;font-size: 20px;}

.userinfo{float: right;margin-right: 10px;}

.userinfo a{text-decoration: none;color: #ffffff;}

.menu{width:200px;background: #333744;position: absolute;}

.main{position: absolute;left: 200px;right: 0px;}

.layui-collapse{border: none;}

.layui-colla-item{border-top: none;}

.layui-colla-title{background: #42485b;color: #ffffff;}

.layui-colla-content{border-top: none;padding: 0px;}

后台管理系统

{$admin.username}【{$role.title}】退出

{volist name="$menus" id="vo"}

{$vo.title}

{volist name="vo.children" id="cvo"}

{$cvo.title}

{/volist}

{/volist}

layui.use(['element','layer'], function(){

var element = layui.element;

$ = layui.jquery;

layer = layui.layer;

resetMenuHeight();

});

// 重新设置页面高度

function resetMenuHeight(){

var height = document.documentElement.clientHeight - 50;

$('#menu').height(height);

}

// 重新设置主操作区高度

function resetMainHeight(obj){

var height = parent.document.documentElement.clientHeight - 53;

$(obj).parent('div').height(height);

}

// 菜单点击

function menufire(obj){

// 获取url

var src = $(obj).attr('src');

// 设置iframe的src

$('iframe').attr('src',src);

}

// 退出登录

function logout(){

// 退出前确认

layer.confirm('确定要退出吗?',{

icon:3,

btn:['确定','取消']

},function(){

$.get('/index.php/admins/account/logout',function(res){

if(res.code>0){

layer.msg(res.msg,{'icon':2});

}else{

layer.msg(res.msg,{'icon':1});

setTimeout(function(){window.location.href='/index.php/admins/account/login';},1000);

}

},'json');

});

}

namespace app\admins\controller;

use think\Controller;

use Util\SysDb;

class Base extends Controller{

public function __construct(){

parent::__construct();

$this->_admin = session('admin');

if(!$this->_admin){

header('Location:/index.php/admins/account/login');

exit;

}

$this->assign('admin',$this->_admin);

$this->db = new SysDb;

// 判断用户是否有权限

$group = $this->db->table('admin_groups')->where(array('gid'=>$this->_admin['gid']))->item();

if(!$group){

$this->request_error('对不起,您没有权限');

}

$rights = json_decode($group['rights']);

// 当前访问的菜单

$controller = request()->controller();

$method = request()->action();

$res = $this->db->table('admin_menus')->where(array('controller'=>$controller,'method'=>$method))->item();

if(!$res){

$this->request_error('对不起,您访问的功能不存在');

}

if($res['status'] == 1){

$this->request_error('对不起,该功能已禁止使用');

}

if(!in_array($res['mid'],$rights)){

$this->request_error('对不起,您没有权限');

}

}

private function request_error($msg){

if(request()->isAjax()){

exit(json_encode(array('code'=>1,'msg'=>$msg)));

}

exit($msg);

}

}

批改老师:欧阳批改时间:2019-06-10 09:17:18

老师总结:完成的不错,后台cms管理系统,最重要的就是权限。继续加油。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯之--神秘三位数

有这样一个3位数&#xff0c;组成它的3个数字阶乘之和正好等于它本身。 即&#xff1a;abc a! b! c! 请找出所有满足要求的三位数.审好题很重要&#xff1a;三位数而非&#xff0c;三位数的个数 先写出一个函数求出某个数的阶乘&#xff0c;在跟别求出一个三位数的个十百位&…

生日快乐模板php,可会有人跟我说句生日快乐

一个人一年可以经历三百六十五次零点的跨越&#xff0c;可是真正有意义的却只有那么一次。从呱呱坠地到现在芳华正茂&#xff0c;今晚将是我要度过的第二十二个零点。从此以后&#xff0c;我便会进入到一个崭新的年龄&#xff0c;弱弱的问一句&#xff1a;可会有人跟我说句生日…

Java排序算法之--快速算法--快速上手

何为快速算法&#xff1a;它是冒泡排序的改进~ 基本思想是&#xff1a;通过一趟排序将要排序的数据分割成独立的两部分&#xff0c;其中一部分的所有数据都比另外一部分的所有数据都要小&#xff0c;然后再按此方法对这两部分数据分别进行快速排序&#xff0c;整个排序过程可以…

php fetch返回false,Php fetch返回字符串而不是布爾值“true / false”值

Im using full calender and I have a few events that are all day events. Generally, my php set all allDay > false. Now that I noticed it adds a time on it if I do not specify a time.我正在使用完整的日歷,我有一些事件是全天活動。一般來說,我的php設置所有all…

排序算法值--堆排序

堆实际上是一棵完全二叉树&#xff0c;其任何一非叶节点满足性质&#xff1a;Key[i]<key[2i1]&&Key[i]<key[2i2]或者Key[i]>Key[2i1]&&key>key[2i2]即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。堆分为大顶堆和小顶堆&#x…

linux 彻底删除oracle,Linux下完美卸载Oracle

先说一下Linux 下Oracle没有卸载干净再安装会出现什么后果吧&#xff0c;在一次生产环境安装中&#xff0c;装Oracle时出现一个错误&#xff0c;倒致oracle没有安先说一下Linux 下Oracle没有卸载干净再安装会出现什么后果吧&#xff0c;在一次生产环境安装中&#xff0c;装Orac…

oracle用户密码复杂度查询,11gR2 Database用户密码复杂度验证

已选择6行。关于密码版本的问题&#xff1a;SELECT USERNAME,PASSWORD_VERSIONS FROM DBA_USERS;USERNAME PASSWORD_VERSIONS------------------------------ -----------------JONES 10G 11GADAMS 10G 11GCLARK 10G 11GPRESTON 11GBLAKE 10GThe passwords for accounts jones,…

排序之--冒泡排序

冒泡排序&#xff1a;从大排到小&#xff1b;所谓冒泡&#xff0c;是指通过两两比较&#xff0c;将最大的数或者最小的数先冒出来。 例如数组&#xff1a;arr[] {53,48,80,98};arr[0]跟arr[1]比较&#xff0c;将大的放在arr[0]上&#xff0c;小的放在arr[1]上&#xff0c;通过…

oracle查询结果存入临时表,Oracle查询问题引发临时表使用

分析某段时间内&#xff0c;刷卡金额大于1000的卡的消费记录&#xff0c;写法如下。sql语句写法&#xff1a;select a.dno,a.dcard,a.dcard_money,a.dcard_type,a.ddate, a.dsubshop,a.dworker,a.dtype,j.Djf Dnowjf,b.dsje,B.Dcountfrom st_card_salemx a,( select m.dcard,Co…

排序之--选择排序

所谓选择排序&#xff0c;就是将数组中的最大值&#xff0c;或者最小值选出来。public class xuanze{public void maoPao(int []arr) {for(int i 0; i < arr.length-1;i) {int min i; //容易出错for(int j i1;j < arr.length;j) {// 这里也要区分冒…

oracle状态blocked,oracle 监听状态为BLOCKED

静态监听的状态是UNKNOWN。当数据库状态是OPEN时&#xff0c;动态监听是READY&#xff1b;当数据库状态是NOMOUNT时&#xff0c;动态监听状态是BLOCKED。LSNRCTL> statusConnecting to (DESCRIPTION(ADDRESS(PROTOCOLTCP)(HOST192.168.10.65)(PORT1521)))STATUS of the LIST…

插入排序--~

插入排序&#xff0c;顾名思义&#xff0c;就是先把前面的数排好&#xff0c;后面的数来一个就插入一个&#xff0c;来一双就插入两个~&#xff08;按顺序拍~&#xff09;public class daJiMu {public void maoPao(int []arr) {for(int i 1;i < arr.length;i) {for(int j …

oracle 12c alert,Oracle 12c DG备库Alert报错ORA-01110

环境是12.2.0.1 version, Oracle Data Guard备库今天故障恢复了一下&#xff0c;RMAN恢复后发现备库Alert一直报错&#xff0c;但是备库主库同步一致&#xff0c;数据一致。2018-07-05T23:42:22.18404808:00Errors in file /u01/app/oracle/diag/rdbms/dwjrstdydb/dwjrstdydb/t…

蓝桥杯大赛基础之--数列排序

题目&#xff1a;数列排序 问题描述  给定一个长度为n的数列&#xff0c;将这个数列按从小到大的顺序排列。1<n<200输入格式  第一行为一个整数n。  第二行包含n个整数&#xff0c;为待排序的数&#xff0c;每个整数的绝对值小于10000。输出格式  输出一行&#…

linux窗帘文件夹命令,窗帘面板和电机 · 控客智能家居 Linux SDK 使用手册 · 看云...

## 开关停| OPEN | CLOSE | STOP || --- | --- | --- || 开 | 关 | 停 |### 请求json{"nodeId": "100","opcode": "SWITCH","arg": "OPEN","requester": "HJ_Server"}### 响应json{"nod…

关于maven面试的哪些事儿~

maven是什么&#xff1f; 优点&#xff1a; 1. Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。 2. 在多个开发团队环境时&#xff0c;Maven可以设置按标准在非常短的时间里完成配置工作&#xff0c;使开发人员的工作更加轻松。 3. Maven增加…

0640权限linux啥意思,linux系统rwx(421)、777权限详解

摘要linux的常见权限&#xff0c;mark一下常用的linux文件权限如下&#xff1a;r--r--r--rw-------rw-r--r--rw-rw-rw-rwx------rwxr--r--rwxr-xr-xrwxrwxrwx12345678从左至右&#xff0c;先是3个数字&#xff0c;代表文件的权限然后是9个字母(或者连字符)其中 1-3位数字代表文…

spring常见术语理解

SpringMVC工作流程&#xff1a;流程 1、用户发送请求至前端控制器DispatcherServlet 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、处理器映射器找到具体的处理器&#xff0c;生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 …

linux 智联 网卡设置,Linux初学者DNS配置指南(四)配置Bind常见问题

手把手教你如何配置Linux下的DNS(四)配置Bind常见问题一&#xff0e;rndc:connect failed: connection refused错误1.1.问题发生&#xff1a;配置DNS完成后&#xff0c;输入命令重启DNS服务使配置生效&#xff1a;/etc/rc.d/init.d/namedrestart或rdnc status出现rndc: connect…

mybatis那些事~

http://blog.csdn.net/qq_33824312/article/details/737710081.JDBC编程有哪些不足之处&#xff0c;MyBatis是如何解决这些问题的&#xff1f;①数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能&#xff0c;如果使用数据库链接池可解决此问题。解决&#xff1a;在Sq…