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 相关文章推荐
php基础知识:类与对象(5) static
Dec 13 PHP
php intval的测试代码发现问题
Jul 27 PHP
php 获取当前访问的url文件名的方法小结
Feb 08 PHP
PHP 图像尺寸调整代码
May 26 PHP
php json_encode奇怪问题说明
Sep 27 PHP
php利用单例模式实现日志处理类库
Feb 10 PHP
php实现把url转换迅雷thunder资源下载地址的方法
Nov 07 PHP
php简单定时执行任务的实现方法
Feb 23 PHP
php实现随机显示图片方法汇总
May 21 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
Dec 17 PHP
php实现XML和数组的相互转化功能示例
Feb 08 PHP
PHP+Apache环境中如何隐藏Apache版本
Nov 24 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
php实现图片添加水印功能
2014/02/13 PHP
php验证码生成代码
2015/11/11 PHP
PHP计算日期相差天数实例分析
2016/02/23 PHP
PHP递归的三种常用方式
2019/02/28 PHP
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
关于延迟加载JavaScript
2015/05/05 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
jQuery时间日期三级联动(推荐)
2016/11/27 Javascript
jQuery实现圣诞节礼物动画案例解析
2016/12/25 Javascript
js实现延迟加载的几种方法
2017/04/24 Javascript
vue 2.0项目中如何引入element-ui详解
2017/09/06 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
2019/04/23 Javascript
通过循环优化 JavaScript 程序
2019/06/24 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
2020/02/01 Javascript
uni-app微信小程序登录授权的实现
2020/05/22 Javascript
Javascript生成器(Generator)的介绍与使用
2021/01/31 Javascript
Python编程中对文件和存储器的读写示例
2016/01/25 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
python 2.7.14安装图文教程
2018/04/08 Python
python实现决策树分类(2)
2018/08/30 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
Python实现把类当做字典来访问
2019/12/16 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
2020/07/01 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
Elemental Herbology官网:英国美容品牌
2019/04/27 全球购物
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
工厂仓管员岗位职责
2014/01/01 职场文书
金融行业职业生涯规划范文
2014/01/17 职场文书
学校安全防火方案
2014/06/07 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
2016年公司“3.12”植树节活动总结
2016/03/16 职场文书