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 相关文章推荐
第十二节 类的自动加载 [12]
Oct 09 PHP
利用PHP实现与ASP Banner组件相似的类
Oct 09 PHP
使用adodb lite解决问题
Dec 31 PHP
15种PHP Encoder的比较
Mar 06 PHP
PHP 开源框架22个简单简介
Aug 24 PHP
php读取EXCEL文件 php excelreader读取excel文件
Dec 06 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
Dec 24 PHP
thinkphp跨库操作的简单代码实例
Sep 22 PHP
基于PHPexecl类生成复杂的报表表头示例
Oct 14 PHP
PHP中类的自动加载的方法
Mar 17 PHP
基于PHP常用文件函数和目录函数整理
Aug 17 PHP
浅谈如何提高PHP代码质量之单元测试
May 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提交post数组参数实例分析
2015/12/17 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
PHP学习记录之数组函数
2018/06/01 PHP
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
Javascript学习笔记8 用JSON做原型
2010/01/11 Javascript
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
全面解析Bootstrap中transition、affix的使用方法
2016/05/30 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
2016/07/01 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
ES6中Proxy代理用法实例浅析
2017/04/06 Javascript
初探Vue3.0 中的一大亮点Proxy的使用
2018/12/06 Javascript
vue鼠标悬停事件实例详解
2019/04/01 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
2020/09/04 Javascript
python动态网页批量爬取
2016/02/14 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
python3下pygame如何实现显示中文
2020/01/11 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
2020/06/03 Python
Python偏函数Partial function使用方法实例详解
2020/06/17 Python
详解Django ORM引发的数据库N+1性能问题
2020/10/12 Python
送给他或她的礼物:FUN.com
2018/08/17 全球购物
工地安全标语
2014/06/07 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
感恩祖国演讲稿
2014/09/09 职场文书
国庆节标语大全
2014/10/08 职场文书
党员学习群众路线心得体会
2014/11/04 职场文书
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android