Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

PHP使用配置文件示例

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

1.应用目标

  为了开发一个比较通用的文件上传程序,拟用配置文件来设定文件上传的各种参数。当然,我们完全可以用数据库更简单的加以实现。但是,目前国内很多php爱好者都没有稳定的数据库和php空间来使用,基于文件的配置更方便大家“打一枪换一个地方”^&^。

2.主要内容

  1. 字符串处理函数的使用;
  2. 任意空格分隔参数值方式的处理;
  3. 使用while循环对数组元素遍历。

配置文件样例


#myini.php
[table up]
#id dir user max(kb) type check limit callback
up001 /www/abc/ * 100 jpg,gif /www/cgi-bin/gifchk www.linuxaid.com.cn /www/ok.htm
up002 /www/def/ bear22 * * * 211.100.*.* /www/cgi-bin/ok.cgi
[table del]
#id user
fa001 anf

3.考虑重点

  就读配置文件本身而言,我们可以认为难点集中在:

  1. 不同的配置功能区,有相同ID的配置;
  2. 分隔各个参数的空格是任意个的,不能用简单的字符串切分来完成。

  这两个重点将是我们代码量比较大的地方。

程序及其注释

  该功能函数以及测试取得结果的程序如下:


####################################################################
#Project Name: uploadTest
#File Name:upload.php
#Author : Hu Jian Min 
#Home Page: http://lanf.yeah.net
#E-mail:lanf@linuxaid.com.cn
#Time: 2001 . 9 
####################################################################
$configureFile="myini.php";
//获取参数文件的特定行的值,其中操作ID即配置文件中的ID
function get_config($conf,$actionID="",$actionType=""){
//$conf 配置文件名,$actionID 操作ID ,$actionType 操作类型
//需要返回的参数
global $targetDir,$user,$maxLength,$fileType,$checkFile,
$limitSite,$callback; //如果没有操作ID,返回false $actionID=trim($actionID); if($actionID=="") return false; $keylength=strlen($actionID); //将文件 内容读入数组 $fileArray=file($conf); //选定参数区域的标志 $canshuZoneId=0; if($actionType=="upload"){ //假如是上传文件的话 while (list($key,$value) = each($fileArray)) { $value=trim($value); //判断参数区域,将参数提取限制在上传文件设置区 $Zone_temp=substr($value,0,1); if($Zone_temp=="["){//开始一个参数区域 if(strstr($value, "up")){ echo "开始上传文件参数区:".$value."
";//请注释掉 $canshuZoneId=1;//选中了目标参数区域 }else{ if($canshuZoneId==0) { continue; }else{ 1 echo "到了另外一个区域:".$value."
";//请注释掉 break; } } }else{ if($canshuZoneId==0) continue; }//区域选择结束 $id_temp=substr($value,0,$keylength); if($id_temp==$actionID){ //开始取参数 //基本思想是从后边开始取参数,然后从原串中去掉已经取走的参数,把原串两头空格
(主要是尾部)去掉后重复开始的动作。实际上,为了代码的简洁,
可以用一个数组来循环,但是那样参数的可读性就不强了。为了方便大家理解这种
考虑方法,暂时采用重复劳动方式^&^。 $callback=trim(strrchr($value, " ")); $value=trim(substr($value,0,strlen($value)-strlen($callback))); $limitSite=trim(strrchr($value, " ")); $value=trim(substr($value,0,strlen($value)-strlen($limitSite))); $checkFile=trim(strrchr($value, " ")); $value=trim(substr($value,0,strlen($value)-strlen($checkFile))); $fileType=trim(strrchr($value, " ")); $value=trim(substr($value,0,strlen($value)-strlen($fileType))); $maxLength=trim(strrchr($value, " ")); $value=trim(substr($value,0,strlen($value)-strlen($maxLength))); $user=trim(strrchr($value, " ")); $value=trim(substr($value,0,strlen($value)-strlen($user))); $targetDir=trim(strrchr($value, " ")); $value=trim(substr($value,0,strlen($value)-strlen($targetDir))); return true;//成功取得所需参数信息,返回true }else{ continue; } }//while结束,能运行到这一步说明没有找到匹配的ID return false; }elseif($actionType=="del"){ //如果是删除文件操作 while (list($key,$value) = each($fileArray)) { $value=trim($value); //判断参数区域,将参数提取限制在 删除 文件设置区 $Zone_temp=substr($value,0,1); if($Zone_temp=="["){//开始一个参数区域 if(strstr($value, "del")){ $canshuZoneId=1; }else{ if($canshuZoneId==0) { continue; }else{ break; } } }else{ if($canshuZoneId==0) continue; }//区域选择结束 $id_temp=substr($value,0,$keylength); if($id_temp==$actionID){ //开始取参数 $user=trim(strrchr($value, " ")); return true; }else{ continue; } }//while结束,能运行到这一步说明没有找到匹配的ID return false; }else{//既不是up,也不是del return false; }; return false; } //函数定义结束 #############测试函数功能部分############### //定义一个显示参数取得情况并把参数变量重新归为""的函数 function get_global_info(){ global $targetDir,$user,$maxLength,$fileType,
$checkFile,$limitSite,$callback; echo "
显示全局变量情况:"; echo "
targetDir : $targetDir"; echo "
user : $user"; echo "
maxLength : $maxLength"; echo "
fileType : $fileType"; echo "
checkFile : $checkFile"; echo "
limitSite : $limitSite"; echo "
callback : $callback"; echo "
正在初始化全局变量
"; $targetDir="";$user="";$maxLength="";$fileType="";
$checkFile="";$limitSite="";$callback=""; } //函数定义结束 echo "
fa008 upload"; get_config($configureFile,"fa008","upload"); get_global_info(); echo "
fa001 upload"; get_config($configureFile,"fa001","upload"); get_global_info(); echo "
fa001 del"; get_config($configureFile,"fa001","del"); get_global_info(); ############测试部分结束############# ?>


 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:用PHP和MySQL构建一个数据库驱动的网站(十)   下一篇:怎样才算够开放

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章