php后台多用户权限组思路与实现程序代码分享


Posted in PHP onFebruary 13, 2012

adminconfig.php 这是后台系统中所有文件权限配置。
fun.php 这是一个功能函数
left.php 网站后台根据用户登录的ID来加载相对应的功能菜单
op.php 调用adminconfig.php 默认权限文件
opsava.php 保存用户权限成一个php文件
好了我们先来看看 fun.php文件吧。

<? 
function findsub($keys ,$userid='abc' ) //此函数重要就是为了调用用户的权限信息 
{ 
include('user/'.$userid.'.php'); 
foreach($bb as $key=>$submenu) 
{ 
foreach($submenu as $subkey=>$menuitem) 
{ 
if( $subkey == $keys ) 
{ 
return 1; 
} 
} 
} 
} 
//下面为生成用户的php权限文件 
//写入 
function cache_write($name, $var, $values) { 
$cachefile = 'op/www.hzhuti.com/'.$name.'.php'; 
$cachetext = "<?phprn".'$'.$var.'='.arrayeval($values)."rn?>"; 
if(!swritefile($cachefile, $cachetext)) 
{ 
exit("File: $cachefile write error."); 
} 
} 
//数组转换成字串 
function arrayeval($array, $level = 0) { 
$space = ''; 
for($i = 0; $i <= $level; $i++) { 
$space .= "t"; 
} 
$evaluate = "Arrayn$space(n"; 
$comma = $space; 
foreach($array as $key => $val) { 
$key = is_string($key) ? '''.addcslashes($key, ''\').''' : $key; 
$val = !is_array($val) && (!preg_match("/^-?d+$/", $val) || strlen($val) > 12) ? '''.addcslashes($val, ''\').''' : $val; 
if(is_array($val)) { 
$evaluate .= "$comma$key => ".arrayeval($val, $level + 1); 
} else { 
$evaluate .= "$comma$key => $val"; 
} 
$comma = ",n$space"; 
} 
$evaluate .= "n$space)"; 
return $evaluate; 
} 
//写入文件 
function swritefile($filename, $writetext, $openmod='w') { 
if(@$fp = fopen($filename, $openmod)) { 
flock($fp, 2); 
fwrite($fp, $writetext); 
fclose($fp); 
return true; 
} else { 
exit("File: $filename write error."); 
return false; 
} 
} 
?>

adminconfig.php 后台权限配置文件,以一个数组形式保存
<? 
$menus = array( 
'news' => array( 
'caption'=>'资讯管理', 
'icon'=>'admin/icon_15.gif', 
'sub' => array( 
'newsaddtype' => array('caption' => '分类增加', 'url' => 'news/addtype.php'), 
'newstypemange' => array('caption' => '分类管理', 'url' => 'news/typemange.php'), 
'newsnewsend' => array('caption' => '发布资讯', 'url' => 'news/newsend.php'), 
'newsnewmange' => array('caption' => '资讯管理', 'url' => 'news/newmange.php'), 
'newscomments' => array('caption' => '评论管理', 'url' => 'news/comments.php'), 
), 
), 
'ask' => array( 
'caption'=>'问卷调查', 
'icon'=>'admin/icon_15.gif', 
'sub' => array( 
'voteadmin_subject_add' => array('caption' => '添加投票主题', 'url' => 'vote/admin_subject_add.php'), 
'voteadmin_subject' => array('caption' => '管理投票主题', 'url' => 'vote/admin_subject.php'), 
'voteadmin_title_add' => array('caption' => '添加投票问题', 'url' => 'vote/admin_title_add.php'), 
'voteadmin_title' => array('caption' => '管理投票问题', 'url' => 'vote/admin_title.php'), 
'voteadmin_question_add' => array('caption' => '添加投票答案', 'url' => 'vote/admin_question_add.php'), 
'voteadmin_question' => array('caption' => '管理投票答案', 'url' => 'vote/admin_question.php'), 
'voteadmin_system' => array('caption' => '投票初始配置', 'url' => 'vote/admin_system.php') 
), 
), 
'ads' => array( 
'caption'=>'广告管理', 
'icon'=>'admin/icon_15.gif', 
'sub' => array( 
'ada' => array('caption' => '增加广告', 'url' => 'ada.php'), 
'adm' => array('caption' => '广告管理', 'url' => 'adm.php'), 
'flashadd' => array('caption' => '焦点图广告增加', 'url' => 'flashadd.php'), 
'flashad' => array('caption' => '焦点图广告管理', 'url' => 'flashad.php') 
), 
), 
'mange' => array( 
'caption'=>'系统管理员', 
'icon'=>'admin/icon_15.gif', 
'sub' => array( 
'adminuser' => array('caption' => '管理员添加', 'url' => 'adminuser.php'), 
'modpass' => array('caption' => '密码修改', 'url' => 'modpass.php') 
), 
), 
); 
?>

left.php文件很简单就是根据用户登录后ID读出权限
<? 
$userid = $_SESSION['adminid']; 
include("op/admincofig.php"); 
include("op/ www.hzhuti.com /".$userid.".php"); 
foreach($bb as $key=>$submenu) 
{ 
echo "<tr><td bgcolor="#D879A7" style="line-height:22px;text-align:center;color:#ffffff;"> nr <font color="#EA6A8D" face="Webdings"></font><b>".$menus[$key]['caption']."</b><br /></td></tr> nr <tr ><td bgcolor="F5E8F1">"; 
foreach($submenu as $subkey=>$menuitem) 
{ 
$tmparr = explode("|",$menuitem); 
echo "<font color="#EA6A8D" face="Webdings">4</font><a href='".$tmparr[1]."' target="mainframe">".$tmparr[0]."</a><br> nr"; 
} 
echo "</td></tr> nr "; 
}

php后台多用户权限组思路与实现程序代码分享

op.php这个文件就是要调用我们的adminconfig.php文件,然后利用fun.php文件中函数把提供过来的数据保存成数组如图

php后台多用户权限组思路与实现程序代码分享

 

点击保存我们调用了opsava.php 文件,代码如下

<? 
include("op/fun.php"); 
if( $_POST ) 
{ 
$sarray = $_POST ; 
cache_write($userid,'bb',$sarray);//写入缓存 
echo "<script>alert('编辑保存成功!');location='op.php?userid=".$userid."';</script>"; 
} 
?>

保存成功后文件内容如
<?php 
$bb=Array 
( 
'member' => Array 
( 
'user_search' => '会员升级管理|user_search.php' 
), 
'membercy' => Array 
( 
'cyuser_search' => '会员升级管理|cyuser_search.php', 
'cyuser_search5' => '交友会员|cyuser_search.php?grade=5' 
), 
'userid' => 7, 
'button' => '保存编辑' 
) 
?>

这样的话我们的left只要加载 7.php文件就只会显示这里在的文件,这样一个基本的后台权限就完成了。
PHP 相关文章推荐
关于时间计算的结总
Dec 06 PHP
echo, print, printf 和 sprintf 区别
Dec 06 PHP
默默小谈PHP&amp;MYSQL分页原理及实现
Jan 02 PHP
探讨各种PHP字符串函数的总结分析
Jun 05 PHP
PHP框架Laravel的小技巧两则
Feb 10 PHP
php三种实现多线程类似的方法
Oct 30 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
Nov 27 PHP
Yii2基于Ajax自动获取表单数据的方法
Aug 10 PHP
php简单实现文件或图片强制下载的方法
Dec 06 PHP
用PHP的socket实现客户端到服务端的通信实例详解
Feb 04 PHP
Laravel网站打开速度优化的方法汇总
Jul 16 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
php _autoload自动加载类与机制分析
Feb 10 #PHP
php 文本文件的读取效率
Feb 10 #PHP
php+iframe实现隐藏无刷新上传文件
Feb 10 #PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 #PHP
PHP中call_user_func_array()函数的用法演示
Feb 05 #PHP
PHP高级对象构建 多个构造函数的使用
Feb 05 #PHP
PHP高级对象构建 工厂模式的使用
Feb 05 #PHP
You might like
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
PHP通过COM使用ADODB的简单例子
2006/12/31 PHP
PHP操作文件方法问答
2007/03/16 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
将FCKeditor导入PHP+SMARTY的实现方法
2015/01/15 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
Yii框架实现多数据库配置和操作的方法
2017/05/25 PHP
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
2013/01/07 Javascript
jquery 无限级联菜单案例分享
2013/03/26 Javascript
JavaScript中使用arguments获得函数传参个数实例
2014/08/27 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
原生JS轮播图插件
2017/02/09 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
vue自定义指令用法经典实例小结
2019/03/16 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
layui表格数据复选框回显设置方法
2019/09/13 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
python3+PyQt5+Qt Designer实现堆叠窗口部件
2018/04/20 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
Python 项目转化为so文件实例
2019/12/23 Python
最新2019Pycharm安装教程 亲测
2020/02/28 Python
python关于变量名的基础知识点
2020/03/03 Python
浅析NumPy 切片和索引
2020/09/02 Python
python判断变量是否为列表的方法
2020/09/17 Python
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
考博专家推荐信模板
2013/12/02 职场文书
幼儿园见习报告范文
2014/10/30 职场文书
水电工岗位职责
2015/02/14 职场文书
Python中基础数据类型 set集合知识点总结
2021/08/02 Python
Python docx库删除复制paragraph及行高设置图片插入示例
2022/07/23 Python