使用PHP对配置文件进行修改
来源:互联网 发布:新浪股票行情数据接口 编辑:程序博客网 时间:2024/05/22 14:04
使用PHP对配置文件进行修改
文/ heiyeluren
今天做一个php web shell 程序的密码修改,就碰到问题了,我们的密码和程序是在同一个文件里的,如何做到无缝修改,并且不影响程序正常执行。
我程序的配置文件的格式是类似下面的形式:
/*================= 配置选项 ===================*/
//登陆用户和密码,请修改为自己的用户名和密码
$manage["user"] = "root";
$manage["pass"] = "123";
//本文件目前的名字,请正确填写,否则相关操作可能将无效
$manage["file"] = "./ps101.php";
/*================= 配置结束 ===================*/
我如何提取出 $manage['user'] = ''root''这样的值进行修改工作,因为文件比较大,代码很多,配置文件是在程序的头部分,首先想了个基本的思路是:
使用file()遍历整个文件,然后找到某个数组的值的字符串是:
$manage["user"] = "root";
然后,用exploade()来把 $manage["user"] = "";通过"="进行分割,放到两个数组然后把第二个值用更新后的值去替换
最后再把整个字符串重新写入到文件....
但是代码实现起来很困难,上网问高手,给了这么段代码:
$lines = file("config.php");
$count =sizeof($lines);
for($i=0; $i<$count; $i++){
$tmp = explode($lines[$i], '=');
if($tmp==null || sizeof($tmp)!=2)
continue;
if(trim($tmp[0])=='$manage["user"]'){
$lines[$i] = $tmp[0]."= ".$manage["user"];
break;
}
}
$str = implode($lines, "/r/n");
然后将$str写回到文件
确实,按照我的思路来的话,代码就应该是这样的,但是我去一执行,并不好使。
怎么半呢?想了半天,能不能通过正则表达式来做。
于是又考虑到 $manage[''user'']这样的形式在程序里出现的次数不多,也许能够通过正则替换来修改。
那么基本的思路就出来了,把所有的程序代码读进一个变量里,然后通过正则替换掉这个字符串里的相应内容,代码列出:
// 打开文件
$fp = fopen($manage["file"], 'r');
// 把文件读进$configfile
$configfile = fread($fp, filesize($manage["file"]));
fclose($fp);
// 通过正则替换来做
$configfile = preg_replace("/[$]manage/[/"user/"/]/s*/=/s*[/"'].*?[/"']/is", "/$manage[/"user/"] = /"$user_name/"", $configfile);
$configfile = preg_replace("/[$]manage/[/"pass/"/]/s*/=/s*[/"'].*?[/"']/is", "/$manage[/"pass/"] = /"$user_pass/"", $configfile);
// 把文件重新写回原来的地方
$fp = fopen($manage["file"], 'w');
fwrite($fp, trim($configfile));
fclose($fp);
于是我一试验,还真可以~~~~
写于 2004-12-24 02:00
祝大家圣诞节快乐!
- 使用PHP对配置文件进行修改
- 使用PHP对配置文件进行修改
- 使用PHP对配置文件进行修改
- 使用Javassist对.class文件进行修改
- 使用javascript对表格进行动态修改
- 使用Javassist对.class文件进行修改
- 对配置文件进行加密
- PHP使用之修改php.ini 配置文件(Mac)
- 使用PHP对非法内容进行检查
- 使用PHP对非法内容进行检查
- 使用APC对PHP进行性能优化
- Unity3D 使用XML进行简单的配置文件修改
- php配置文件修改
- php配置文件修改注意事项
- php经典实例使用正则动态修改配置文件
- php经典实例使用正则动态修改配置文件
- mysql修改配置文件进行优化
- mysql修改配置文件进行优化
- [转] GCC 中文手册(中)
- 在家没事,看看boost的代码
- 安装arch的笔记和总结
- WinGate 6.0 build 984铪铪铪
- WinGate 6.0 build 984铪铪铪
- 使用PHP对配置文件进行修改
- [转]GCC 中文手册(上)
- 学习C++:实践者的方法(Beta1)
- 学习C++:实践者的方法(Beta1)
- 为什么C++(来自C++之父的观点)
- 为什么C++(来自C++之父的观点)
- 设计模式之Adapter(适配器)
- [转]浅谈Linux的安全设置
- TopLanguage小组讨论精选[三](2007.11-2007.12)