У меня есть код PHP и HTML, хранящийся в таблице базы данных. Когда я получаю эти данные, мне нужно эхо HTML и обрабатывать PHP. Я думал, что могу использовать eval()
для этого, который работает, если я делаю это eval("echo 'dlsj'; ?> EVALED ");
Я получаю распечатку «dlsjEVALED».
Проблема в том, что я получаю фатальную ошибку, когда запускаю более длинные скрипты. Вещи как:
Ошибка анализа: синтаксическая ошибка, неожиданный '<' в /home/content.php(18): код eval () 'в строке 1
Я бы предположил, что вы пытаетесь eval () что-то, что содержит открывающий <?php
. И это приводит к ошибке.
Лучший совет – никогда не храните php и html-код в своей базе данных. И избегайте eval (), как чума.
Я не могу сказать, что не так с вашим кодом, поскольку вы не предоставили достаточной информации. Но даже если бы у меня был какой-то совет, я не думаю, что смогу дать ему хорошую совесть.
Вы должны переделать все свое приложение, чтобы оно не требовало хранения таких вещей в базе данных. Я не могу представить, почему это было бы необходимо.
just right der ………..
eval('?>' . $content .'<?php');
Вам нужно повторно открыть php-режим после EVALED
. Видимо, вы должны сделать это с помощью <?
а не полный <?php
.
Как правило, eval следует избегать. Но правила нарушаются. Есть ли какая-то тема в « Когда есть зло в php?»? что дает некоторые менее догматические советы.
В зависимости от того, что вы хотите сделать, может быть целесообразно использовать файл шаблона, который вы используете, с текстом, который будет меняться в локальной переменной до поиска шаблона.
Что касается сохранения кода, который будет выполняться в БД … это происходит в некоторых фреймворках, таких как Drupal, для обеспечения удобной расширяемости, но затем Drupal довольно тщательно просматривается для слабых мест безопасности.
Также, если вы пишете самомодифицирующийся код, вам нужно использовать eval (). Не уверен, что кто-то сделал это в php, но это, безусловно, было бы интересно.
$contents = htmlentities($contents); echo html_entity_decode(eval($contents));