[help] Исправить ошибку при сохранении конфиг файла

Тема в разделе "Как сделать...", создана пользователем E-body, 20 мар 2009.

Статус темы:
Закрыта.
  1. E-body

    E-body

    Регистр.:
    6 сен 2007
    Сообщения:
    986
    Симпатии:
    331
    В инете нарыл старую интеграцию смф и дле...

    Переделываю и столкнулся с проблемкой.
    1. При сохранении изменений в самой админке когда возвращаюсь опять в опции интеграции то вылетает ошибка
    PHP:
    Parse errorsyntax errorunexpected '='expecting '(' in /home/sayt/public_html/engine/data/dleinsmf.php on line 1
    2. Содержимое dleinsmf.php изначально и всегда должно начинаться кодом
    PHP:
    <?PHP $dle_smf_conf = array (
    Но, после сохранения измененных параметров админке это переделывает в такую *рень
    PHP:
    <?PHP Array = array (
    3. Подскажите пожалста как исправить этот код который изменяет в данный момент НЕправильно первую строку конфига
    PHP:
    if ( $action == "save" )
      {
       $save_con['version_id'] = "1.0";
       $handler = fopen( ENGINE_DIR."/data/dleinsmf.php", "w" );
       fwrite( $handler, "<?PHP $dle_smf_conf = array (");
       function save_conf( 
    $_smf20$_smf21 = false )
       {
        global 
    $handler;
        global 
    $find;
        global 
    $replace;
        foreach ( 
    $_smf20 as $_smf7 => $_smf10 )
        {
         if ( is_array( 
    $_smf10 ) )
         {
          fwrite( 
    $handler, "'".$_smf7."' => array (" );
          save_conf( 
    $_smf10, true );
         }
         else
         {
          
    $_smf10 = strtr( $_smf10, "\"""'" );
          
    fwrite$handler"'".$_smf7."' => \"".stripslashes$_smf10 )."\", " );
         }
        }
        if ( 
    $_smf21 )
        {
         
    fwrite$handler"), " );
        }
       }
       
    save_conf$save_con );
       
    fwrite$handler"); ?>" );
       
    fclose$handler );
       
    dle_smf_msg"info"$lang['opt_sysok'], $lang[opt_sysok_1], $PHP_SELF."?mod=dle_smf" );
      }
    Чтоб после сохранения была первая строка
    PHP:
    <?PHP $dle_smf_conf = array (
    Зарание спасибо.
    п.с. пару часов уже потратил на фикс этой бодяги :nezn:
     
  2. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    Для начала попробуй добавить пару слэшей:

    Код:
    fwrite( $handler, "\<?PHP \$dle_smf_conf = array ("); 
    но думаю, что это еще не все.
     
    E-body нравится это.
  3. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Попробуйте
    $_smf10 = strtr( $_smf10, """, "'" );
    заменить на
    $_smf10 = strtr( $_smf10, "'", "'" );
     
    E-body нравится это.
  4. E-body

    E-body

    Регистр.:
    6 сен 2007
    Сообщения:
    986
    Симпатии:
    331
    Спасибо, иначе сам не догадался бы... я ведь до этого думал что еще ранее вызов функций портится - крч предостерег от порчи всего кода ;)
    fwrite( $handler, "\<?PHP \$dle_smf_conf = array (");
    красный лишний... Все работает, тему можно закрывать!
     
  5. Виллен

    Виллен

    Регистр.:
    12 мар 2009
    Сообщения:
    235
    Симпатии:
    60
    а зачем заменять на
    PHP:
    $_smf10 strtr$_smf10"'""'" );
    смысл этой строки? может тогдаее вообще убрать?
    или всетаки нужно " менять на '
    но тогда замена будет такая
    PHP:
    $_smf10 strtr$_smf10"\"""'" );
     
  6. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    $_smf10 = strtr( $_smf10, "\"", "'" );
    Совершенно верно просто вставил случайно не тот кусок кода ....
     
Статус темы:
Закрыта.