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的栏目导航程序
Oct 09 PHP
PHP 面向对象 final类与final方法
May 05 PHP
php流量统计功能的实现代码
Sep 29 PHP
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
Jan 27 PHP
php mail to 配置详解
Jan 16 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
Apr 24 PHP
php防止sql注入简单分析
Mar 18 PHP
php比较两个字符串长度的方法
Jul 13 PHP
php微信公众平台开发之获取用户基本信息
Aug 17 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
Mar 03 PHP
PHP网页安全认证的实例详解
Sep 28 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 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删除目录及目录下所有文件的方法详解
2013/06/06 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
2016/03/23 PHP
js获取单选按钮的数据
2006/11/27 Javascript
CSS常用网站布局实例
2008/04/03 Javascript
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
javascript 拖放效果实现代码
2010/01/22 Javascript
jquery代码实现简单的随机图片瀑布流效果
2015/04/20 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
jQuery Ztree行政地区树状展示(点击加载)
2016/11/09 Javascript
关于angular js_$watch监控属性和对象详解
2017/04/24 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
ant-design-vue 快速避坑指南(推荐)
2020/01/21 Javascript
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
Python实现去除代码前行号的方法
2015/03/10 Python
Python对list列表结构中的值进行去重的方法总结
2016/05/07 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
Python操作word常见方法示例【win32com与docx模块】
2018/07/17 Python
使用python绘制3维正态分布图的方法
2018/12/29 Python
详解Pandas之容易让人混淆的行选择和列选择
2019/07/10 Python
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
python global和nonlocal用法解析
2020/02/03 Python
利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境
2020/11/01 Python
美国高端医师级美容产品电商:BeautifiedYou.com
2017/04/17 全球购物
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
匡威西班牙官网:Converse西班牙
2019/10/01 全球购物
文秘专业大学生求职信
2013/11/10 职场文书
煤矿班组长竞聘书
2014/03/31 职场文书
食品采购员岗位职责
2014/04/14 职场文书
村干部四风问题整改措施
2014/09/30 职场文书
医院护士党的群众路线教育实践活动对照检查材料思想汇报
2014/10/04 职场文书
SQL基础的查询语句
2021/11/11 MySQL