В области администрирования моего сайта есть форма, которая предназначена для имени хоста, имени пользователя и пароля для базы данных mysql, которую использует сайт. В настоящее время эти значения жестко закодированы в класс php. Но кто я могу связать его, чтобы форма могла редактировать переменные в классе php (и сохранять результаты на сервере, другими словами, переменные жестко запрограммированы). Обычно я буду хранить такие вещи в базе данных, но, очевидно, это невозможно.сохраняйте переменные php постоянно без базы данных
ответ
Сохраните значения в файле конфигурации. И убедитесь, что он недоступен из Интернета.
Проще всего сохранить значения в массиве конфигурации - пользователь вводит значения, вы генерируете массив из него, затем file_put_contents("config.php", "<?php $config = " . var_export($config))
. С помощью этого метода всякий раз, когда вам нужен массив конфигурации, все, что вам нужно сделать, это include config.php
, и оно есть.
Это непроверенный код, например, цели. В зависимости от вашей ситуации вам может понадобиться решить условия гонки, для этого недостаточно file_put_contents
. Основная часть приведенного выше кода: var_export
возвращает действительный php-код, который вы можете eval
(если вы достаточно злы) или эхо в файл и включите его позже.
Как это работает, если я хочу изменить его, как только я создал файл конфигурации в первый раз. –
@Jonathan Вы модифицируете уже загруженный массив '$ config', затем снова выполните часть' file_put_contents'. – Maerlyn
так просто воссоздайте файл? –
Создайте файл конфигурации и предоставите свой веб-сервер для записи на него. Тогда просто написать сценарий, который сохраняет конфигурацию БД в этот файл. Например.
$fh = fopen('config.php', 'w');
fwrite($fh, chr(60) . "?php\n");
fwrite($fh, sprintf("define('DB_HOST', '%s');\n", addslashes($_POST['DB_HOST'])));
fwrite($fh, sprintf("define('DB_USER', '%s');\n", addslashes($_POST['DB_USER'])));
fwrite($fh, sprintf("define('DB_PASS', '%s');\n", addslashes($_POST['DB_PASS'])));
fclose($fh);
Как это работает, если я хочу изменить его, как только я создал файл конфигурации в первый раз. –
Вы поместите код создания файла конфигурации в другой скрипт, скажем, editconfig.php. – jmz
Возможный дубликат [PHP, файл чтения] (http://stackoverflow.com/questions/2237291/php-reading-file) – Gordon
О, не будьте так педантичны, это о написании, а не чтении файлов. –