PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
LML
Отправлено: 05 Апреля, 2021 - 15:35:29
Post Id



Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Февр. 2021  


Помог: 0 раз(а)




Приветствую!

В файле voc.php имеется строка:
PHP:
скопировать код в буфер обмена
  1. echo "write('";
  2.         eval('?>'.str_replace("'", "\\'", str_replace("\r", "", str_replace("\n", "\\n", implode('', file($file_path."designes/".$design."/common_body_start.php"))))));
  3. echo        "\\n');\n";


Файл common_body_start.php имеет вид:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php if (!defined("_COMMON_")) {echo "stop";exit;}?>
  2. </head>
  3. <body bgcolor="#FFFFFF" background="<?=$current_design?>grunge/gradient.gif" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">


В процессе, понадобилось изменить common_body_start.php к виду:
PHP:
скопировать код в буфер обмена
  1. <?PHP if (!defined("_COMMON_")) {echo "stop"; exit;}
  2. echo '</head>'.PHP_EOL;
  3. echo '<body style="background-image:url('.$gradient.'); background-attachment:fixed; background-color:#fff; margin:0px;">'.PHP_EOL;
  4. ?>


Всё везде работает, но получаю ошибку:
Цитата:
PHP Parse error: syntax error, unexpected ''</head>\\'.PHP_EOL;\\necho \\'<b' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) in /.../.../.../.../.../.../designes/mychatik/voc.php(884) : eval()'d code on line 1

Подскажите, пожалуйста, как исправить код в eval, а если возможно, выполнить всё это без eval?

(Отредактировано автором: 05 Апреля, 2021 - 15:40:37)

 
 Top
don.bidon
Отправлено: 05 Апреля, 2021 - 19:22:27
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Март 2019  


Помог: 0 раз(а)




Попробуйте труху из 1-го куска кода заменить на
PHP:
скопировать код в буфер обмена
  1. require_once $file_path."designes/".$design."/common_body_start.php";
 
 Top
LML
Отправлено: 05 Апреля, 2021 - 22:18:48
Post Id



Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Февр. 2021  


Помог: 0 раз(а)




Там всё не так просто...

Страница формируется через JavaScript, в который вставляется php.
PHP:
скопировать код в буфер обмена
  1.     echo "write('";
  2.  
  3.     echo        "\\n');\n";


Это как раз части строки JavaScript

И я так понимаю, что весь тот страшный код пытается сложить common_body_start.php в одну строку и через eval впихнуть в write(
 
 Top
Vladimir Kheifets
Отправлено: 06 Апреля, 2021 - 11:26:59
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 664
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 30 раз(а)




LML пишет:
Там всё не так просто...

Страница формируется через JavaScript, в который вставляется php.
PHP:
скопировать код в буфер обмена
  1.     echo "write('";
  2.     echo        "\\n');\n";

Это как раз части строки JavaScript
И я так понимаю, что весь тот страшный код пытается сложить common_body_start.php в одну строку и через eval впихнуть в write(

Добрый день!
В файле voc.php
Спойлер (Отобразить)

common_body_start.php
Спойлер (Отобразить)

Или
Спойлер (Отобразить)


p.s. echo "write('$html');"; м.б. переставить в common_body_start.php
Удачи!
 
 Top
LML
Отправлено: 06 Апреля, 2021 - 15:15:39
Post Id



Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Февр. 2021  


Помог: 0 раз(а)




Vladimir Kheifets спасибо огромнейшее за помощь!
Жаль, что не могу ещё плюсики ставить Недовольство, огорчение((

Код красивый получился, не спорю. Но одно НО...
Файл common_body_start.php нельзя кардинально изменять. Он десятки раз подключается во всех php файлах. И везде нормально, через include.
И только в voc.php встраивается вот таким вот способом в JavaScript.

Похоже, нужно возвращать первоначальный вариант и парить мозги никому Недовольство, огорчение(
 
 Top
Vladimir Kheifets
Отправлено: 06 Апреля, 2021 - 16:30:31
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 664
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 30 раз(а)




LML пишет:
Vladimir Kheifets спасибо огромнейшее за помощь!
Жаль, что не могу ещё плюсики ставить Недовольство, огорчение((

Код красивый получился, не спорю. Но одно НО...
Файл common_body_start.php нельзя кардинально изменять. Он десятки раз подключается во всех php файлах. И везде нормально, через include.
И только в voc.php встраивается вот таким вот способом в JavaScript.
Похоже, нужно возвращать первоначальный вариант и парить мозги никому Недовольство, огорчение(

Лучше не надо к первоначальному. Попробуйте так:
Спойлер (Отобразить)
Удачи!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB