phpcms可以给某些角色设定权限,比如某些栏目对于某些角色是无法访问的。但是左侧菜单还是会显示该栏目名称,这对编辑来说是不需要的。都访问不了,还显示栏目名称干啥呢。看了一下phpcms的代码,简单地实现了隐藏菜单的小功能。
从后台页面可以很简单地分析出,左侧菜单的生成是用Ajax:
$.ajax(
{
type:'get',
url:'?mod=phpcms&file=menu&action=get_menu_list&menuid='+id,
cache:cache_refresh,
dataType:'json',
success:function(json)
{
……
}
}
请求的地址是 http://www.bkjia.com/admin.php?mod=phpcms&file=menu&action=get_menu_list&menuid=4
在URL参数中,file是指请求的控制器文件,这里menu就是指 admin/menu.inc.php这个文件,action 则是方法。我们找到 menu.inc.php 下的 get_menu_list 方法:
case 'get_menu_list':
$data = $m->get_child($menuid);
$data = str_charset(CHARSET, 'utf-8', $data);
$max = array_slice($data, -1);
$data['max'] = $max[0]['menuid'];
$data = json_encode($data);
if(PHP_OS < 5.0) header('Content-type: text/html; charset=utf-8');
echo $data;
break;
将其改为:
立即学习“PHP免费学习笔记(深入)”;
case 'get_menu_list':
$data = $m->get_child($menuid);
foreach($data as $k=>$val)
{
if( !empty($data[$k]['keyid']) && substr( $data[$k]['keyid'], 0, 5 ) == 'catid' )
{
if( $data[$k]['keyid'] == 'catid_0' )
{
continue;
}
$catid = str_replace("catid_", "", $data[$k]['keyid']);
// 管理权限
$allow_manage = $priv_role->check('catid', $catid, 'manage');
if(!$allow_manage)
{
unset($data[$k]);
}
}
}
$data = str_charset(CHARSET, 'utf-8', $data);
$max = array_slice($data, -1);
$data['max'] = $max[0]['menuid'];
$data = json_encode($data);
if(PHP_OS < 5.0) header('Content-type: text/html; charset=utf-8');
echo $data;
break;
代码存在投机性,但大概思路就是这样。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号