電子書籍の厳選無料作品が豊富!

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

A 回答 (5件)

追記です



読み込みはparse_ini_fileという便利なものがありましたね。普段使わないのですっかり忘れてました。

  http://jp.php.net/manual/ja/function.parse-ini-f …

これを使えばセクションも設定可能です。自前であれこれする必要がなくなります(書き込みは仕方ないですが・・)。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/02/11 16:31

質問の直接的な答えは他の回答者サンに任せます



あなたの仕様を満たしたものを作った場合、設定を変更するページへのアクセスする方法が何かしらのきっかけで漏洩してしまった場合は第三者がブラウザからパスワード等が簡単にばれてしまうことになりますがよろしいのでしょうか?

設定ファイルなんて一度書いてしまえばそうそう変更するような物でもないですし。わざわざそのような機能を作る意図が良く分からないです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/02/11 16:36

仕様をどうしましょうかねぇ・・と思いつつ、ざっくりと(あくまでもサンプルってことで)



  <?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があったら適宜修正してください(汗
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/02/11 16:30

すごく「ざっくりと」書くとこんな感じですかね・・。

あとは適宜アレンジしてみてください。

  <?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ファイルの)ある程度の設計が必要になります(汗
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/02/09 00:05

そのままの答えになってしまうのですが、


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

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

お礼日時:2008/02/08 23:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!