Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Редактирование конфиг-файла
 
 автор: neadekvat   (15.09.2009 в 19:04)   письмо автору
 
 

Существует файл config.php
Там хранятся все основные параметры (подключение к бд, сообщения, количество того, пятого, десятого и тд) в таком формате:

$dbhos = 'localhost';
$dbuser = 'user';
...
$error_1 = 'Сайт временно недоступен';


Чтобы вручную не открывать этот файл, думаю сделать интерфейс в админке для редактирования этих настроек.
Но как это осуществить представляю плохо.

Может, есть какие-то примеры, чтобы подсмотреть?

Хотел в Джумле подсмотреть, а там все на ООП, я его пока не знаю.

  Ответить  
 
 автор: cheops   (15.09.2009 в 19:14)   письмо автору
 
   для: neadekvat   (15.09.2009 в 19:04)
 

Была сходная тема http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=15290, но это ущербный путь - очень сложно оперировать такими файлами, приходится интенсивно использовать регулярные выражения - если вы хотите редактировать его - лучше упростить формат файла.

  Ответить  
 
 автор: neadekvat   (15.09.2009 в 19:17)   письмо автору
 
   для: cheops   (15.09.2009 в 19:14)
 

Например, какой формат?

  Ответить  
 
 автор: cheops   (15.09.2009 в 19:24)   письмо автору
 
   для: neadekvat   (15.09.2009 в 19:17)
 

Например, csv-формат или ini-формат, для которых предусмотрены стандартные PHP-функции разбора и формирования содержимого.

  Ответить  
 
 автор: neadekvat   (15.09.2009 в 19:30)   письмо автору
 
   для: cheops   (15.09.2009 в 19:24)
 

Спасибо, даже не встречал информацию об этом никогда.
Так, ну с помощью parse_ini_file я достану настройки
А как их туда записать?

  Ответить  
 
 автор: cheops   (15.09.2009 в 20:07)   письмо автору
 
   для: neadekvat   (15.09.2009 в 19:30)
 

Это достаточно просто сделать обходя массив: первый уровень - секции, второй - значения. Если вызывает сложности - можно будет создать специальную функцию-обертку для сохранения ini-файла.

  Ответить  
 
 автор: cheops   (15.09.2009 в 20:16)   письмо автору
 
   для: neadekvat   (15.09.2009 в 19:30)
 

Можно начать отталкиваться от следующего скрипта
<?php
  
// Получение файла
  
$arr parse_ini_file("get.ini"true);
  echo 
"<pre>";
  
print_r($arr);
  echo 
"</pre>";
  
// Формируем содержимое массива
  
$content "";
  foreach(
$arr as $key => $value)
  {
    if(
is_array($value))
    {
      
$content .= "[$key]\r\n";
      foreach(
$value as $key => $val)
      {
        
$content .= "$key=$val\r\n";
      }
    }
  }
  echo 
"<pre>";
  echo 
$content;
  echo 
"</pre>";
  
// Записываем файл
  
file_put_contents("get1.ini"$content);
?>

  Ответить  
 
 автор: neadekvat   (15.09.2009 в 21:24)   письмо автору
 
   для: cheops   (15.09.2009 в 20:16)
 

Примерно понял, спасибо.
То есть каждый раз весь файл полностью перезаписывается, так?
В таком случаи комментарии там уже никак не оставить?

  Ответить  
 
 автор: cheops   (15.09.2009 в 21:32)   письмо автору
 
   для: neadekvat   (15.09.2009 в 21:24)
 

В принципе можно обновлять данные так, чтобы комментарии оставались, но это это уже потребует отказа от parse_ini_file() и использование регулярных выражений.

  Ответить  
 
 автор: neadekvat   (15.09.2009 в 21:42)   письмо автору
 
   для: cheops   (15.09.2009 в 21:32)
 

Круг замкнулся, как я понимаю.
Тогда проще (т.к. необходимо воздержаться от использования бд) использовать ini файл, а комментарии к переменной сделать отдельно, в документации, например. Ну, и перменные удобоваримо называть

  Ответить  
 
 автор: cheops   (15.09.2009 в 21:43)   письмо автору
 
   для: neadekvat   (15.09.2009 в 21:42)
 

Можно посмотреть в сторону CSV-файлов - это что-то вроде XLS-таблицы, там вы можете зарезервировать произвольное количество столбцов на строку.

Можете даже в Excel создать такой файл и посмотреть как он устроен (это обычный текстовый файл).

  Ответить  
 
 автор: neadekvat   (15.09.2009 в 21:44)   письмо автору
 
   для: cheops   (15.09.2009 в 21:43)
 

А не сложновато ли для простого кофига получится?

  Ответить  
 
 автор: cheops   (15.09.2009 в 21:46)   письмо автору
 
   для: neadekvat   (15.09.2009 в 21:44)
 

Если в него не часто руками лазить будут, то нормально, если будут редакторы (не знакомые с его устройством), которые его захотят править вручуную, пожалуй соглашусь, сложновато.

  Ответить  
 
 автор: neadekvat   (15.09.2009 в 21:49)   письмо автору
 
   для: cheops   (15.09.2009 в 21:46)
 

пока, пожалуй, на варианте с ini файлами остановлюсь, чтобы хотя бы для самого себя оставить шанс

PS если я правильно все сделал (сохранил с экселя в cvs файл), то там все предельно просто в плане идеи, но ручками капаться - глазки оставишь

  Ответить  
 
 автор: Trianon   (15.09.2009 в 21:49)   письмо автору
 
   для: neadekvat   (15.09.2009 в 21:42)
 

Одно неясно.
Почему необходимо воздержаться от применения БД?

  Ответить  
 
 автор: neadekvat   (15.09.2009 в 21:54)   письмо автору
 
   для: Trianon   (15.09.2009 в 21:49)
 

Потому что не все понимают, как редактировать вручную через phpmyadmin
Некоторых так и прет нажать на красный крестик
Хотя создать табличку settings в бд вариант, наверное, более удобный

  Ответить  
 
 автор: cheops   (15.09.2009 в 21:56)   письмо автору
 
   для: neadekvat   (15.09.2009 в 21:54)
 

Хм... можно свой интерфейс написать для таблицы - он пожалуй попроще файлового варианта с регулярными выражениями будет. А в phpMyAdmin непосвященным :) запретить ходить.

  Ответить  
 
 автор: neadekvat   (15.09.2009 в 22:02)   письмо автору
 
   для: cheops   (15.09.2009 в 21:56)
 

Большенство заказчиков догадываются не лазить там, где им не надо
Но ведь у некоторых руки чешуться поковыряцо и сломать то, за что они сами платили %) От таких, пожалуй, спасет только двойной бекап, и что б о втором они даже не догадывались :о)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования