Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Редактирование конфига
Форумы портала PHP.SU » » Работа с файловой системой и файлами » Редактирование конфига

Страниц (1): [1]
 

1. 20167 - 20 Октября, 2011 - 17:55:41 - перейти к сообщению
Здравствуйте! для редактирования конфига своего сервера я написал скрипт но встала проблема как заполнить поле value="" конфиг типа server.cfg то есть идет так (hostname "Name server") и т.д.. С переменными у меня получилось сделать но в конфиге нельзя использовать переменные... можете подсказать что делать?
(Добавление)
Думаю сделать так сначала отправлять данные в бд а из бд писать в конфиг, но и тут встала проблема а вдруг я буду редактировать через фтп то тогда после сохранения на сервере будет новый конфиг а на сайте без изменений....

Как поступить помогите...
2. Stierus - 20 Октября, 2011 - 19:09:22 - перейти к сообщению
Честно говоря, не понял, в чем проблема О_о
3. 20167 - 21 Октября, 2011 - 12:01:18 - перейти к сообщению
Что мне конкретней нужно я написал скрипт для редактирования конфига , такой же принцип в панелях управления сервачок фортим и т.д... есть одно поле "Название сервера" в него я в вожу имя сервера ,все сохраняется но и поле очищается, а надо что бы после сохранения название сервера по прежнему было в данном поле.. тоже самое должно быть и ко все остальным полям... через массив я бы все сделал... но увы конфиг формата server.cfg и в нем разрешено писать так (hostname "Name Server") обычный конфиг cs сервера
4. Stierus - 21 Октября, 2011 - 12:07:27 - перейти к сообщению
Покажите код, так будет проще.
5. 20167 - 21 Октября, 2011 - 12:09:51 - перейти к сообщению
Индексный файл

PHP:
скопировать код в буфер обмена
  1. <?PHP  
  2.  
  3. if( isset( $_REQUEST['subaction'] ) ) $subaction = $_REQUEST['subaction']; else $subaction = "";
  4.  
  5.         function showRow($title = "", $description = "", $field = "") {
  6.                 echo "<tr>
  7.        <td style=\"padding:4px\" class=\"option\">
  8.        <b>$title</b><br /><span class=small>$description</span>
  9.        <td width=394 align=middle >
  10.        $field
  11.        </tr><tr><td height=1 colspan=2></td></tr>";
  12.                 $bg = "";
  13.                 $i ++;
  14.         }
  15.        
  16.         function makeDropDown($options, $name, $selected) {
  17.                 $output = "<select name=\"$name\">\r\n";
  18.                 foreach ( $options as $value => $description ) {
  19.                         $output .= "<option value=\"$value\"";
  20.                         if( $selected == $value ) {
  21.                                 $output .= " selected ";
  22.                         }
  23.                         $output .= ">$description</option>\n";
  24.                 }
  25.                 $output .= "</select>";
  26.                 return $output;
  27.         }      
  28. echo
  29. <<<HTML
  30.  
  31. <FORM ACTION="save_config.php" METHOD=POST>
  32. <div class="unterline"></div><table width="100%">
  33. HTML;
  34. showRow( "Название сервера", "<input class=\"edit bk\" type=text style=\"text-align: center;\" name=\"save_con[hostname]\" value=\"{$value}\" size=40>" );
  35.  
  36. echo "</table></td></tr>";
  37.  
  38. echo <<<HTML
  39. <INPUT TYPE="submit" VALUE="OK">
  40. </FORM>
  41. </div>
  42.        
  43.        
  44.         </body>
  45.                
  46.    
  47. </html>
  48. HTML;
  49.  
  50.  
  51.  
  52. ?>


Файл сохранения

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. // ********************************************************************************
  4. // Запись настроек
  5. // ********************************************************************************
  6.  
  7.        
  8. $save_con = $_POST['save_con'];
  9.        
  10.         include_once '../data/classes/parse.class.php';
  11.         $parse = new ParseFilter();
  12.         $parse->safe_mode = true;;
  13.        
  14.         $find[] = "'\r'";
  15.         $replace[] = "";
  16.         $find[] = "'\n'";
  17.         $replace[] = "";
  18.        
  19.  
  20.         if( $auto_detect_config )
  21.        
  22.         $save_con = $save_con;
  23.        
  24.         $handler = fopen( '../data/config/server.cfg', "w" );
  25.        
  26.         fwrite( $handler, "//Server.cfg by\n//Version 1.0()\n\n" );
  27.         foreach ( $save_con as $name => $value ) {
  28.                
  29.                 if( $name != "offline_reason" ) {
  30.                        
  31.                         $value = trim( strip_tags(stripslashes( $value )) );
  32.                         $value = htmlspecialchars( $value, ENT_QUOTES);
  33.                         $value = preg_replace( $find, $replace, $value );
  34.                        
  35.                         $name = trim( strip_tags(stripslashes( $name )) );
  36.                         $name = htmlspecialchars( $name, ENT_QUOTES );
  37.                         $name = preg_replace( $find, $replace, $name );
  38.                 }
  39.                
  40.                 $value = str_replace( "$", "$", $value );
  41.                 $value = str_replace( "{", "{", $value );
  42.                 $value = str_replace( "}", "}", $value );
  43.                
  44.                 $name = str_replace( "$", "$", $name );
  45.                 $name = str_replace( "{", "{", $name );
  46.                 $name = str_replace( "}", "}", $name );
  47.                
  48.                 fwrite( $handler, "{$name} \"$value\"\n\n" );
  49.        
  50.         }
  51.         fwrite( $handler, "//DONE" );
  52.         fclose( $handler );
  53.        
  54. Header('location: index.php');
  55.  
  56. ?>
6. Stierus - 21 Октября, 2011 - 12:38:16 - перейти к сообщению
написать функцию, которая будет смотреть в файл конфига и доставать оттуда все, что вам нужно. Смотря на
Цитата:
Header('location: index.php');
Я могу сказать, что иначе вы переменную не получите.

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

 

Powered by ExBB FM 1.0 RC1