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的FTP学习(四)
Oct 09 PHP
php ftp文件上传函数(基础版)
Jun 03 PHP
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
Jun 03 PHP
五款常用mysql slow log分析工具的比较分析
May 22 PHP
解析php二分法查找数组是否包含某一元素
May 23 PHP
Drupal读取Excel并导入数据库实例
Mar 02 PHP
php实现斐波那契数列的简单写法
Jul 19 PHP
php实现scws中文分词搜索的方法
Dec 25 PHP
php实现无限级分类查询(递归、非递归)
Mar 10 PHP
Yii2中事务的使用实例代码详解
Sep 07 PHP
PHP分享图片的生成方法
Apr 25 PHP
phpinfo无法显示的原因及解决办法
Feb 15 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和ACCESS写聊天室(十)
2006/10/09 PHP
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
php设计模式 Factory(工厂模式)
2011/06/26 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
PHP设计模式之结构模式的深入解析
2013/06/13 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
让textarea控件的滚动条怎是位与最下方
2007/04/20 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
JS触发服务器控件的单击事件(详解)
2016/08/06 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
AngularJS中的按需加载ocLazyLoad示例
2017/01/11 Javascript
js实现消息滚动效果
2017/01/18 Javascript
使用ES6语法重构React代码详解
2017/05/09 Javascript
node使用UEditor富文本编辑器的方法实例
2017/07/11 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
微信小程序 网络通信实现详解
2019/07/23 Javascript
vue实现移动端触屏拖拽功能
2020/08/21 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
python 多线程重启方法
2019/02/18 Python
Tensorflow Summary用法学习笔记
2020/01/10 Python
Python基于BeautifulSoup爬取京东商品信息
2020/06/01 Python
weblogic面试题
2016/03/07 面试题
应届毕业生个人求职信范文
2014/01/29 职场文书
保安队长职务说明书
2014/02/23 职场文书
宣传活动总结范文
2014/07/01 职场文书
小学清明节活动总结
2014/07/04 职场文书
户籍证明模板
2014/09/28 职场文书
2014年最新离婚协议书范本
2014/10/11 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
暑期辅导班宣传单
2015/07/14 职场文书
《没有任何借口》读后感:完美的执行能力
2020/01/07 职场文书
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
Python绘制散乱的点构成的图的方法
2022/04/21 Python