2010-07-25 5 views
3

В области администрирования моего сайта есть форма, которая предназначена для имени хоста, имени пользователя и пароля для базы данных mysql, которую использует сайт. В настоящее время эти значения жестко закодированы в класс php. Но кто я могу связать его, чтобы форма могла редактировать переменные в классе php (и сохранять результаты на сервере, другими словами, переменные жестко запрограммированы). Обычно я буду хранить такие вещи в базе данных, но, очевидно, это невозможно.сохраняйте переменные php постоянно без базы данных

+0

Возможный дубликат [PHP, файл чтения] (http://stackoverflow.com/questions/2237291/php-reading-file) – Gordon

+1

О, не будьте так педантичны, это о написании, а не чтении файлов. –

ответ

4

Сохраните значения в файле конфигурации. И убедитесь, что он недоступен из Интернета.

Проще всего сохранить значения в массиве конфигурации - пользователь вводит значения, вы генерируете массив из него, затем file_put_contents("config.php", "<?php $config = " . var_export($config)). С помощью этого метода всякий раз, когда вам нужен массив конфигурации, все, что вам нужно сделать, это include config.php, и оно есть.

Это непроверенный код, например, цели. В зависимости от вашей ситуации вам может понадобиться решить условия гонки, для этого недостаточно file_put_contents. Основная часть приведенного выше кода: var_export возвращает действительный php-код, который вы можете eval (если вы достаточно злы) или эхо в файл и включите его позже.

+0

Как это работает, если я хочу изменить его, как только я создал файл конфигурации в первый раз. –

+0

@Jonathan Вы модифицируете уже загруженный массив '$ config', затем снова выполните часть' file_put_contents'. – Maerlyn

+0

так просто воссоздайте файл? –

5

Создайте файл конфигурации и предоставите свой веб-сервер для записи на него. Тогда просто написать сценарий, который сохраняет конфигурацию БД в этот файл. Например.

$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); 
+0

Как это работает, если я хочу изменить его, как только я создал файл конфигурации в первый раз. –

+0

Вы поместите код создания файла конфигурации в другой скрипт, скажем, editconfig.php. – jmz