• ベストアンサー

設定ファイルの読み書き

PHPで何かを作るときに、DBのパスワードや変数の定義をconfig.phpみたいな設定ファイルを作り、各ソースでrequire_once("config.php")等で読み込んで使うようにしています。設定ファイルの変更はテキストエディタでやっているのですが、これをブラウザで読み込んで表示し、登録はテキストファイルやXMLなどに書き出す方法を探しています。 要は、「各設定をブラウザでやって、実際のスクリプトではその設定を読む」みたいなことをやりたいのですが、どういう方法があるのでしょうか? アドバイス下さい。お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.4

追記です 読み込みはparse_ini_fileという便利なものがありましたね。普段使わないのですっかり忘れてました。   http://jp.php.net/manual/ja/function.parse-ini-file.php これを使えばセクションも設定可能です。自前であれこれする必要がなくなります(書き込みは仕方ないですが・・)。

NORI-AYU
質問者

お礼

ありがとうございます。 何度も回答頂き感謝いたします。 parse_ini_file、はじめて知りました。 まさにコレって感じで使えそうです。 勉強しながらちょっと使ってみたいと思います。

その他の回答 (4)

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.5

質問の直接的な答えは他の回答者サンに任せます あなたの仕様を満たしたものを作った場合、設定を変更するページへのアクセスする方法が何かしらのきっかけで漏洩してしまった場合は第三者がブラウザからパスワード等が簡単にばれてしまうことになりますがよろしいのでしょうか? 設定ファイルなんて一度書いてしまえばそうそう変更するような物でもないですし。わざわざそのような機能を作る意図が良く分からないです。

NORI-AYU
質問者

お礼

ありがとうございます。 まぁそうなんですけど、今回質問させて頂いたのは 1つのアプリを汎用というかサーバ環境、ユーザが変わっても簡単に設定が変更出来て、アップロードもあまり出来ないようなユーザにも設定が変更できる様にしたいなと思いまして。 確かにセキュリティはしっかり考えるべきだと思います。 なので、その辺を踏まえながらどのような物にするか考えたいと思います。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

仕様をどうしましょうかねぇ・・と思いつつ、ざっくりと(あくまでもサンプルってことで)   <?php   $keys = array('db_host', 'db_nme', 'db_user', 'db_pass');   foreach ($keys as $key) { $$key = ''; }   if ($_POST) {     $fp = fopen("config.php", w);     foreach ($keys as $key) {       $$key = $_POST[$key];       fwrite($fp, $key . "=" . ${$key} . "\n");       }     fclose($fp);     }   ?>   <form action="" method="post">   <?php   $array = file("config.php");   foreach ($array as $line) {   list($key, $value) = explode("=", trim($line));   if ($value == '') {continue; }     $$key = $value;     }   foreach ($keys as $key) {     print "{$key}<input type=\"text\" name=\"$key\" value=\"${$key}\"><br />\n";     }   ?>   <input type="submit" value="submit">   </form> 慌てて書いたので文法ミスやtypoがあったら適宜修正してください(汗

NORI-AYU
質問者

お礼

ありがとうございます。 助かります。参考にさせていただきたいと思います。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

すごく「ざっくりと」書くとこんな感じですかね・・。あとは適宜アレンジしてみてください。   <?php   if ($_POST) {     $config = $_POST['config'];     $fp = fopen("config.php", w);     fwrite($fp, $config);     fclose($fp);     }   ?>   <form action="" method="post">   <textarea name="config">   <?php readfile("config.php"); ?>   </textarea>   <input type="submit" value="submit">   </form> 「textareaなどはみっともないので、項目ごとに入力を・・」となると(configファイルの)ある程度の設計が必要になります(汗

NORI-AYU
質問者

お礼

ありがとうございます。 そうなんですよね。1つの項目に<input type="text">とやりたくて、項目が100個くらいあるんです。 それを何か上手に出来ないかと思いまして。 configファイルの書式は限定されても全然いいんですけど。

  • kan_ge
  • ベストアンサー率0% (0/1)
回答No.1

そのままの答えになってしまうのですが、 「これをブラウザで読み込んで表示し、登録はテキストファイル」 と言われているように、そのままの事をすればいかがでしょうか? fopen fwrite fclose で

NORI-AYU
質問者

お礼

ありがとうございます。 まぁそうなんですが、現在のconfig.phpは $ABC="xyz"; $DEF="123"; というような感じになっていて、この値の部分を上手に書きかえれるような方法がないかなと思いまして。 fwriteなどで細々やるしかないのでしょうか。