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. LML - 05 Апреля, 2021 - 15:35:29 - перейти к сообщению
Приветствую!

В файле 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?
2. don.bidon - 05 Апреля, 2021 - 19:22:27 - перейти к сообщению
Попробуйте труху из 1-го куска кода заменить на
PHP:
скопировать код в буфер обмена
  1. require_once $file_path."designes/".$design."/common_body_start.php";
3. LML - 05 Апреля, 2021 - 22:18:48 - перейти к сообщению
Там всё не так просто...

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


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

И я так понимаю, что весь тот страшный код пытается сложить common_body_start.php в одну строку и через eval впихнуть в write(
4. Vladimir Kheifets - 06 Апреля, 2021 - 11:26:59 - перейти к сообщению
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
Удачи!
5. LML - 06 Апреля, 2021 - 15:15:39 - перейти к сообщению
Vladimir Kheifets спасибо огромнейшее за помощь!
Жаль, что не могу ещё плюсики ставить Недовольство, огорчение((

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

Похоже, нужно возвращать первоначальный вариант и парить мозги никому Недовольство, огорчение(
6. Vladimir Kheifets - 06 Апреля, 2021 - 16:30:31 - перейти к сообщению
LML пишет:
Vladimir Kheifets спасибо огромнейшее за помощь!
Жаль, что не могу ещё плюсики ставить Недовольство, огорчение((

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

Лучше не надо к первоначальному. Попробуйте так:
Спойлер (Отобразить)
Удачи!

 

Powered by ExBB FM 1.0 RC1