ホームページ >バックエンド開発 >PHPチュートリアル >PHP変更構成ファイルのサンプルコード

PHP変更構成ファイルのサンプルコード

WBOY
WBOYオリジナル
2016-07-25 08:54:181452ブラウズ
  1. $fp = fopen("aaa.conf", 'r');

  2. $configfile = fread($fp, filesize("aaa.conf"));
  3. fclose($fp);
  4. //定期的な置換で実行します
  5. $configfile = preg_replace("/\n[パスワード](.+?)\n/is", "", $configfile);//これは[パスワード] と次の空行の間の内容を一致させるには、 /[パスワード](.+?)\n/is と書くだけですが、この行の前の空行を削除したいので、 Got a n< を追加します。 ;/p>
  6. //ファイルを元の場所に書き戻します

  7. $fp = fopen("aaa.conf", 'w');
  8. fwrite($fp, トリム($configfile) );
  9. fclose($fp);
  10. //ファイルの最後に新しいパスワード行を 2 行追加します
  11. $newpassword = "456";
  12. $filename="aaa.conf";//操作ファイルを定義します
  13. $fcontent = file( $filename); //file() はファイル全体を配列に読み込みます
  14. $fp = fopen("$filename","a");
  15. $str = "nn[password]n$newpassword";
  16. fwrite( $ fp, $str);
  17. //by bbs.it-home.org

コードをコピー

今日、php Web シェル プログラムのパスワードを変更していましたが、問題が発生しました。パスワードとプログラムは同じファイル内にありますが、プログラムの通常の実行に影響を与えずにシームレスに変更するにはどうすればよいでしょうか? 構成ファイルの形式は次のようなものです。

  1. $lines = file("config.php");
  2. $count =sizeof($lines);
  3. for($i=0; $i<$count; $i++) {
  4. $tmp =explode($lines[$i], '=');
  5. if($tmp==null || sizeof($tmp)!=2)
  6. continue;
  7. if(trim($tmp[0 ])=='$manage["user"]'){
  8. $lines[$i] = $tmp[0]."= ".$manage["user"];
  9. ブレーク;
  10. }
  11. }
  12. $ str = implode($lines, "rn");
コードをコピー

し、$str をファイルに書き戻します

確かに、私のアイデアによれば、コードは次のようになるはずですが、実行すると機能しません。

なぜ半分?正規表現でそれができないかずっと考えていました。 そこで、$manage[''user''] という形式はプログラム内で何度も出現するものではなく、定期的な置換によって変更される可能性があると考えました。

アイデア: すべてのプログラム コードを変数に読み取り、正規表現を使用して文字列内の対応するコンテンツを置き換えます。

コード:

  1. //ファイルを開く
  2. $fp = fopen($manage["file"], 'r');

  3. / / ファイルを $configfile に読み込みます

  4. $configfile = fread($fp, filesize($manage["file"]));
  5. fclose($fp);

  6. // 通常のものに置き換えます式 実行します

  7. $configfile = preg_replace("/[$]manage["user"]s*=s*["'].*?["']/is", "$manage["user"] = " $ user_name"", $configfile);
  8. $configfile = preg_replace("/[$]manage["pass"]s*=s*["'].*?["']/is", "$manage[ " pass"] = "$user_pass"", $configfile);
  9. // ファイルを元の場所に書き戻します
  10. $fp = fopen($manage["file"], 'w');
  11. fwrite($ fp , trim($configfile));
  12. fclose($fp);

コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。