htmlフォームを使用して設定ファイルを編集しようとしています。編集(settings.php)ファイルは次のようになります。
$config['foo'] = FALSE;
$config['maintenance'] = FALSE; //this line is that what it matters
$config['bar'] = FALSE;
ここでの考え方はのを変更することです$config['maintenance']
。フォームが送信されると(maintenance
状態に応じてステータスをtrueまたはfalseに設定するために名前が付けられたチェックボックスがあります)、チェックボックスの値は次のようになります。
$status = ($_POST['maintenance'] === 'on')? "TRUE" : "FALSE";
var valueをデバッグ$status
しましたが、ここまですべてうまくいきます。今、私はファイルで正しい行を見つけるために以下の正規表現を使用しています:
\$config\[(\s+)?(\'|")maintenance(\'|")(\s+)?\](\s+)?=(\s+)?(false|FALSE|true|TRUE);/
よくわからないので、最初は「うまくいく」のですが、説明を終えさせてください...上記のコードに従って、今度は交換を行います。
//read the content and replace it
$content = preg_replace(
'/\$config\[(\s+)?(\'|")maintenance(\'|")(\s+)?\](\s+)?=(\s+)?(false|FALSE|true|TRUE);/',
'$config["maintenance"] = ' . $status . ';',
file_get_contents($file)
);
//set the new content
file_put_contents($file, $content);
チェックボックスをオンにして初めて実行すると、機能し、結果は次のようになります。
$config['foo'] = FALSE;
$config["maintenance"] = TRUE;
$config['bar'] = FALSE;
ただし、チェックボックスで何を選択しても、ファイルには変更が表示されません。バグを見つけるための正しい方向に私を導くことができますか?ありがとうございました
編集。これはhtmlマークアップです
<label>
<input type="checkbox" name="maintenance" /> in maintenance mode
</label>