постоянное сохранение переменных php без базы данных - PullRequest
3 голосов
/ 25 июля 2010

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

Ответы [ 2 ]

5 голосов
/ 25 июля 2010

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

$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);
4 голосов
/ 25 июля 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...