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+FLASH实现上传文件进度条相关文件 下载
Jul 21 PHP
ExtJS与PHP、MySQL实现存储的方法
Apr 02 PHP
PHP中MVC模式的模板引擎开发经验分享
Mar 23 PHP
php接口与接口引用的深入解析
Aug 09 PHP
PHP数据过滤的方法
Oct 30 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
Feb 18 PHP
php查询mysql数据库并将结果保存到数组的方法
Mar 18 PHP
Zend Framework实现多文件上传功能实例
Mar 21 PHP
Yii中CGridView禁止列排序的设置方法
Jul 12 PHP
yii2-GridView在开发中常用的功能及技巧总结
Jan 07 PHP
php实现简易计算器
Aug 28 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 高手之路(一)
2006/10/09 PHP
获得Google PR值的PHP代码
2007/01/28 PHP
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
js可突破windows弹退效果代码
2008/08/09 Javascript
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
JS中的二叉树遍历详解
2016/03/18 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
2016/11/09 Javascript
利用js来实现缩略语列表、文献来源链接和快捷键列表
2016/12/16 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
React Native 使用Fetch发送网络请求的示例代码
2017/12/02 Javascript
浅谈React + Webpack 构建打包优化
2018/01/23 Javascript
vue自定义tap指令及tap事件的实现
2018/09/18 Javascript
Node批量爬取头条视频并保存方法
2018/09/20 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
Python中的random()方法的使用介绍
2015/05/15 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
pygame用blit()实现动画效果的示例代码
2020/05/28 Python
详解python 条件语句和while循环的实例代码
2020/12/28 Python
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
携程英文网站:Trip.com
2017/02/07 全球购物
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
个人自我评价和职业目标
2014/01/24 职场文书
产品质量承诺范本
2014/03/31 职场文书
小学生中国梦演讲稿
2014/04/23 职场文书
公司员工活动策划方案
2014/08/20 职场文书
自动化专业大学生职业生涯规划范文:爱拚才会赢
2014/09/12 职场文书
2015大学生自我评价范文
2015/03/03 职场文书
走进毛泽东观后感
2015/06/04 职场文书
解决Nginx 配置 proxy_pass 后 返回404问题
2021/03/31 Servers
pytorch DataLoader的num_workers参数与设置大小详解
2021/05/28 Python
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL