2017-07-06 13 views
3

私はSimple Machine Forumがフォーラムの管理パネル内でいくつかの変数をどのように編集するのかに似たことをしたいと思います。例えば 私はsettings.phpファイルを持っています。私はtool.phpが開き、のsettings.php内のすべての宣言されたPHP変数を見つけたい$ BACKGROUND_COLOR =「オレンジ」と出力tools.php背景色のよう:オレンジ内部の、一度「パープル」に変更して送信されたフォームタグは、置き換え「オレンジ」「パープル」を持つと私は「のsettings.php」を開いた場合、今、ファイル内の変数は、今「$ですバックグラウンド_color = 'Purple' "手動で編集する必要はありません。変数の新しいデータを送信し、古いデータを置き換えることができます。他のPHPファイルでPHPファイルの変数を編集する方法

+0

[このポスト(https://stackoverflow.com/questions/11901521/replace-string-in-text-file-using- PHP)があなたを助けるかもしれません。 – cachique

+1

これは悪名高い不安定な状況です。第1に、セキュリティの観点からは、多くのタイプのパーミッションがあります。これにより、実際には動作しないことが保証されます。また、.phpファイルを書き込めるシステムを持っている場合、間違いやユーザの作ったシステムが悪用や特権コードの実行に大きな影響を与えるため、セキュリティホールとなる可能性があります。全体的には悪い考えです。ほとんどのパッケージには、データベース資格情報だけを必要とするシンプルな制限付きconfig.phpファイルがあり、データベースのname = value変数の大部分がデータベースに保持されます。 – gview

答えて

1

永続的なデータを保持するには、データベースまたは別のファイルにデータを格納する必要があります。例えばJSONファイル次に、あなたはそれが必要とされるどこでもそのデータを使用することができます

ここでJSONファイルを使用した例である

setting_variables.json:。。。

{ 
    "background": "red", 
    "color": "white" 
} 

のsettings.php

$settings = json_decode(file_get_contents("settings_variables.json"), true); 
$background = $settings['background']; 

tools.php

+0

ありがとう:Dデータベースオプションの使用を避けたいと思っていましたが、私はすでにそれを考慮していました。 – Bart

0

データベース を使用してこれを行うことができます。これはsettings.php のデータベースからその値を取り出し、必要に応じてtools.phpから更新します。

0

変数をtool.phpにロードするには、単にinclude("settings.php")を入力します。

設定を変更するには、settings.phpを変更する必要があります。

これを行う最も簡単な方法は、古い値を正規表現で置き換えることです。たとえば、次のようにします。 ["\$background_color *= *'\d*'"]を入力し、["\$background_color = 'Purple'"]に置き換えてください。

ファイルを新しい文字列で上書きするだけです。

私は私がすべてを正しくエスケープわからないんだけど、この方法は、ファイル全体を置き換えることができるはずです。

は、設定ファイルが非常に大きい場合には、おそらくあなたのユースケースのために問題になることはありませんが、それは、それを行うには時間がかかることが、http://php.net/manual/en/function.preg-replace.php

欠点があるを参照してください。

代わりに、あなたが行毎にファイルを読み込むと、(手動または再び正規表現-交換を使用していることを置き換えることができます。

関連する問題