Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 05.04.2020
Сообщений: 6

Проблема с функцией eval

21.09.2020, 23:15. Показов 2128. Ответов 8

Студворк — интернет-сервис помощи студентам
Приветствую всех.
Столкнулся с такой проблемой, что сайт каждый раз бьет ошибку в логах такую: "PHP Warning: Cannot modify header information - headers already sent by (output started at /public_html/index.php(942) : eval()'d code:53) /public_html/index.php(942) : eval()'d code on line 193

Строчки 941-944
PHP
1
2
3
4
$tpl->compile('main');
eval(' ?' . '>' . $tpl->result['main'] . '<' . '? ');
$tpl->global_clear();
?>
Не понимаю в чем проблема и как исправить. Надеюсь на вашу помощь.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.09.2020, 23:15
Ответы с готовыми решениями:

Проблемы с функцией eval()
Здравствуйте, друзья!!! Вот, встала такая проблема, не знаю, как решить ее, поэтому прошу помощи у Вас. Ситуация: нужно написать...

Проблема с функцией UPDATE
У меня такая проблема. Я хочу редактировать категории. сначала вывожу их, чтобы выбрали нужную категорию, потом в другом PHP файле...

Проблема с функцией STRLEN()
Люди помоги ПЛИИИЗЗЗ .... Такой глюк: Передаю закодированный текст в escape формате, декодирую в текстовый формат Unicode, когда измеряю...

8
Невнимательный
 Аватар для ft4l
3107 / 1279 / 358
Регистрация: 08.02.2013
Сообщений: 7,490
Записей в блоге: 2
22.09.2020, 05:08
Цитата Сообщение от Lovskiy Посмотреть сообщение
output started at /public_html/index.php(942) : eval()'d code:53
у вас код в eval() начинается с ?>....
значит тект после ?> выводится ... если текст не начинается с <?php и нет вывода до 53 возможно
а headers already sent бывает согда после того как что-то вывелось,
пытаются вызвать header() или setcookie()
... похоже даже внутри кода который внутри строки $tpl->result['main']
0
0 / 0 / 0
Регистрация: 05.04.2020
Сообщений: 6
22.09.2020, 20:52  [ТС]
Если честно, то мне сообщение ничего не дало)

Добавлено через 1 минуту
PHP
1
2
unset($_SESSION['Donatd']);
unset($_SESSION['Donatd2']);
52 и 53 строчка.
0
Невнимательный
 Аватар для ft4l
3107 / 1279 / 358
Регистрация: 08.02.2013
Сообщений: 7,490
Записей в блоге: 2
22.09.2020, 21:19
Цитата Сообщение от Lovskiy Посмотреть сообщение
eval()'d code on line 193
Поспешил )) Там наверное что-то типа header/setcookie
...но проблема в том что выполняется какой-то вывод до того как пытается их вызвать

есть способы ничего не меняя делать с ob_start() .... https://www.php.net/manual/ru/ref.outcontrol.php
Но как-то костыльно наверное получается eval м ещё буферизация вывода
... и ещё непонятно что там за header/setcookie вызывается аж в 193-й строке $tpl->result['main']
и почему до него получается вывод... или почему, если его не должно быть, eval начинается с ?>
как будто его быть должно
0
0 / 0 / 0
Регистрация: 05.04.2020
Сообщений: 6
23.09.2020, 01:00  [ТС]
PHP
1
2
3
4
5
6
if ($_GET['page'] == 'login')
{
    if (!$_SESSION['Name'] and !$_SESSION['Server'])
    {
        $tpl->set('{content}', $tpl->sub_load_template('login.tpl'));
        if ($_POST['name'] and $_POST['password'] and $_POST['server'])
Это 193 строчка
0
Невнимательный
 Аватар для ft4l
3107 / 1279 / 358
Регистрация: 08.02.2013
Сообщений: 7,490
Записей в блоге: 2
23.09.2020, 03:51
Цитата Сообщение от Lovskiy Посмотреть сообщение
Это 193 строчка
если это 193-я строчка кода , который содержится в пересенной $tpl->result['main']
которая и есть это eval()'d code
Тогда я не знаю даже .) на что оно жалуется... например я делаю такой скрипт
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
error_reporting(-1);
ini_set('display_errors', 1);
header('Content-Type: text/plain; charset=utf-8');
 
$txt = <<<'TXT'
<blabla>
<trulala>
<?php
        flush();
    setcookie('test','test');
 
?>
</blablа>
TXT;
 
eval('?>'.$txt );
Запускаю в браузере получаю
Code
1
2
3
4
5
<blabla>
<trulala>
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent in <b>C:\T\home\www\index.php(17) : eval()'d code</b> on line <b>5</b><br />
</blablа>
Почему-то получаю только добавив flush() ... ini_set('implicit_flush', 1); не помогает
Вобщем строка 5 , как ожидалось.

У Вас в приведённом куске кода если только ещё и выполняемое в строке
$tpl->set('{content}', $tpl->sub_load_template('login.tpl'));
чегото выполняет , чего вызывает такую ошибку....
eval() внутри eval() ? я не знаю... но однозначно где-то header()/setcookie()

почему-то под windows+apache буферизация никак не помогает, если с этим flush();
хоть просто вставить её в сам eval(), хоть просто в коде
PHP
1
eval('ob_start(); ?>'.$txt .'<?php ob_end_flush(); ');
а без flush() оно и без буферизации не жалуется на такой простой код
Вобщем совсем затрудняюмь что-либо сказать

Добавлено через 10 минут

Не по теме:

Есть вариант указать строку кода на форуме )) [PHP=17]....[/PHP]

Цитата Сообщение от x_lab Посмотреть сообщение
PHP
17
eval('ob_start(); ?>'.$txt .'<?php ob_end_flush(); ');



Добавлено через 9 минут
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$txt = <<<'TXT'
<blabla>
<trulala>
<?php
    flush();
    eval("  setcookie('test','test');" );
 
?>
</blablа>
TXT;
 
eval(' ?'.'>'.$txt);
/*
Warning:  Cannot modify header information - headers already sent
 in <b>C:\T\home\www\index.php(21) :
 eval()'d code(5) :
 eval()'d code</b> on line 1
*/
У виндового php даже текст ошибок другой наверно... 7.4.9
0
 Аватар для esculap_ra
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
23.09.2020, 10:31
Запиши в лог $tpl->result['main'] и смотри, что там eval исполняет. Возможно там имеется вывод echo.

PHP
1
2
3
4
5
6
7
8
log_write($tpl->result['main']);
 
function log_write($message)
     {
       $handle=fopen('test.log','a');
       fwrite($handle,print_r($message,true)."\n");
       fclose($handle);
     }
0
0 / 0 / 0
Регистрация: 05.04.2020
Сообщений: 6
26.09.2020, 20:51  [ТС]
esculap_ra, в логе появилась пустая строчка, больше ничего нет.

Добавлено через 16 минут
esculap_ra, Лог мне вывел несколько моих страниц, но ниде не используется eval
0
 Аватар для esculap_ra
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
27.09.2020, 00:27
вообще-то, eval - стремная функция - лучше ее избегать. я сейчас делаю антивирус, так он выдаст предупреждение, если обнаружит использование eval. просто если это предусмотрено в нормальном коде, то побоку, но эта шня может быть внедрена в хакерских кодах.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.09.2020, 00:27
Помогаю со студенческими работами здесь

Проблема с функцией array-push
Заранее прошу прощение за топорность моего языка и за возможное недопонимание. Добрый день всем. Возникла проблема такого рода, при ...

Как сформировать список из результатов, возвращаемых функцией? Двоякая роль EVAL в Лиспе?
1. Есть функция, возвращающая несколько значений, пытаюсь сформировать список из этих значений - ничего не выходит. (defun foo (x)...

Проблема с функцией
def(x, y): i = 0 while i != y: cls() n1 = random.randint(1, x) n2 = random.randint(1, x) ...

Проблема с функцией
Скажите как ее решить код ненадо хотябы строчку этой функции как будет выглядить

Проблема с функцией
Всем привет. Делая небольшой проект, натыкаюсь на некую проблему с присваиванием. Вот код для исследования моей проблемы: list_list =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru