当前位置:首页 > PHP教程 > php高级应用 > 列表

php后台多用户权限组思路与实现程序代码

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-02 16:10:49 浏览: 评论:0 

网站开发少不了有网站后台,有了后台自然要对用户有同角色来分配一下,特别是多用户系统的情况下,如我一个系统要有多个管理员,那么我这些管理要分成,编辑,友情连接,管理员等,那我们要有权限和角色分配,今天我们就来看我以前做的一个系统吧.

先介绍一下文件:

adminconfig.php 这是后台系统中所有文件权限配置。

fun.php 这是一个功能函数

left.php 网站后台根据用户登录的ID来加载相对应的功能菜单

op.php 调用adminconfig.php 默认权限文件

opsava.php  保存用户权限成一个php文件

好了我们先来看看 fun.php文件吧,代码如下:

  1. <?php 
  2. function findsub($keys ,$userid='abc' ) //此函数重要就是为了调用用户的权限信息 
  3.  include('user/'.$userid.'.php');  
  4.  foreach($bb as $key=>$submenu
  5.  {     
  6.   foreach($submenu  as $subkey=>$menuitem
  7.   { 
  8.    if$subkey == $keys ) 
  9.    { 
  10.     return 1;     
  11.    } 
  12.   }   
  13.  } 
  14.  
  15. //下面为生成用户的php权限文件 
  16. //写入  
  17. function cache_write($name$var$values) {  
  18.  $cachefile = 'op/user/'.$name.'.php';  
  19.  $cachetext = "<?phprn".'$'.$var.'='.arrayeval($values)."rn?>";  
  20.  if(!swritefile($cachefile$cachetext))  
  21.  {  
  22.   exit("File: $cachefile write error.");  
  23.  }  
  24.  
  25. //数组转换成字串  
  26. function arrayeval($array$level = 0) {  
  27. $space = '';  
  28.  for($i = 0; $i <= $level$i++) {  
  29.   $space .= "t";  
  30.  }  
  31. $evaluate = "Arrayn$space(n";  
  32. $comma = $space;  
  33.  foreach($array as $key => $val) {  
  34.   $key = is_string($key) ? '''.addcslashes($key, ''\').''' : $key;  
  35.   $val = !is_array($val) && (!preg_match("/^-?d+$/"$val) || strlen($val) > 12) ? '''.addcslashes($val, ''\').''' : $val;  
  36.   if(is_array($val)) {  
  37.    $evaluate .= "$comma$key => ".arrayeval($val$level + 1);  
  38.   } else { //开源代码phpfensi.com 
  39.    $evaluate .= "$comma$key => $val";  
  40.   }  
  41.    $comma = ",n$space";  
  42.  }  
  43.   $evaluate .= "n$space)";  
  44.   return $evaluate;  
  45.  
  46. //写入文件  
  47. function swritefile($filename$writetext$openmod='w') {  
  48.  if(@$fp = fopen($filename$openmod)) {  
  49.   flock($fp, 2);  
  50.   fwrite($fp$writetext);  
  51.   fclose($fp);  
  52.   return true;  
  53.  } else {  
  54.   exit("File: $filename write error.");  
  55.   return false;  
  56.  }  
  57.  
  58. ?> 

adminconfig.php 后台权限配置文件,以一个数组形式保存,代码如下:

  1. <?php 
  2. $menus = array
  3.  
  4.   'news' => array
  5.    'caption'=>'资讯管理'
  6.    'icon'=>'admin/icon_15.gif'
  7.    'sub' => array
  8.     'newsaddtype' => array('caption' => '分类增加''url' => 'news/addtype.php'), 
  9.     'newstypemange' => array('caption' => '分类管理''url' => 'news/typemange.php'),     
  10.     'newsnewsend' => array('caption' => '发布资讯''url' => 'news/newsend.php'), 
  11.     'newsnewmange' => array('caption' => '资讯管理''url' => 'news/newmange.php'), 
  12.     'newscomments' => array('caption' => '评论管理''url' => 'news/comments.php'), 
  13.      
  14.    ), 
  15.   ), 
  16.    
  17.   'ask' => array
  18.    'caption'=>'问卷调查'
  19.    'icon'=>'admin/icon_15.gif'
  20.    'sub' => array
  21.     'voteadmin_subject_add' => array('caption' => '添加投票主题''url' => 'vote/admin_subject_add.php'), 
  22.     'voteadmin_subject' => array('caption' => '管理投票主题''url' => 'vote/admin_subject.php'), 
  23.     'voteadmin_title_add' => array('caption' => '添加投票问题''url' => 'vote/admin_title_add.php'), 
  24.     'voteadmin_title' => array('caption' => '管理投票问题''url' => 'vote/admin_title.php'), 
  25.     'voteadmin_question_add' => array('caption' => '添加投票答案''url' => 'vote/admin_question_add.php'), 
  26.     'voteadmin_question' => array('caption' => '管理投票答案''url' => 'vote/admin_question.php'), 
  27.     'voteadmin_system' => array('caption' => '投票初始配置''url' => 'vote/admin_system.php'
  28.    ), 
  29.   ), 
  30.   'ads' => array
  31.    'caption'=>'广告管理'
  32.    'icon'=>'admin/icon_15.gif'
  33.    'sub' => array
  34.     'ada' => array('caption' => '增加广告''url' => 'ada.php'), 
  35.     'adm' => array('caption' => '广告管理''url' => 'adm.php'),    
  36.     'flashadd' => array('caption' => '焦点图广告增加''url' => 'flashadd.php'), 
  37.     'flashad' => array('caption' => '焦点图广告管理''url' => 'flashad.php'
  38.    ), 
  39.   ),  
  40.    
  41.    
  42.   'mange' => array
  43.    'caption'=>'系统管理员'
  44.    'icon'=>'admin/icon_15.gif'
  45.    'sub' => array
  46.     'adminuser' => array('caption' => '管理员添加''url' => 'adminuser.php'), 
  47.     'modpass' => array('caption' => '密码修改''url' => 'modpass.php')     
  48.    ), 
  49.   ), 
  50.  );  
  51. ?> 

left.php文件很简单就是根据用户登录后ID读出权限,代码如下:

  1. <?php 
  2. $userid = $_SESSION['adminid']; 
  3. include("op/admincofig.php"); 
  4. include("op/user/".$userid.".php"); 
  5.  
  6. foreach($bb as $key=>$submenu
  7. {     
  8.  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">"
  9.  foreach($submenu  as $subkey=>$menuitem
  10.  { 
  11.   $tmparr = explode("|",$menuitem); 
  12.   echo "<font color="#EA6A8D" face="Webdings">4</font><a href='".$tmparr[1]."' target="mainframe">".$tmparr[0]."</a><br> nr"
  13.  } 
  14.  echo "</td></tr> nr ";  
  15. ?> 

op.php这个文件就是要调用我们的adminconfig.php文件,然后利用fun.php文件中函数把提供过来的数据保存成数组,点击保存我们调用了opsava.php 文件,代码如下:

  1. <?php 
  2. include("op/fun.php"); 
  3. if$_POST ) 
  4.  $sarray =  $_POST ; 
  5.  cache_write($userid,'bb',$sarray);//写入缓存  
  6.  echo "<script>alert('编辑保存成功!');location='op.php?userid=".$userid."';</script>"
  7.  
  8. ?> 

保存成功后文件代码如下:

  1. <?php 
  2. $bb=Array 
  3.  ( 
  4.  'member' => Array 
  5.   ( 
  6.   'user_search' => '会员升级管理|user_search.php' 
  7.   ), 
  8.  'membercy' => Array 
  9.   ( 
  10.   'cyuser_search' => '会员升级管理|cyuser_search.php'
  11.   'cyuser_search5' => '交友会员|cyuser_search.php?grade=5' 
  12.   ), 
  13.  'userid' => 7, 
  14.  'button' => '保存编辑' 
  15.  ) 
  16. ?> 

这样的话我们的left只要加载 7.php文件就只会显示这里在的文件,这样一个基本的后台权限就完成了.

Tags: php后台多用户 用户权限组代码

分享到: