Вам необходимо повторно открыть режим php после EVALED
. Очевидно, вы должны сделать это с <?
, а не с полным <?php
.
Эваля, как правило, следует избегать. Но правила созданы для того, чтобы их нарушать. Есть нить в Когда в php есть eval evil? , которая дает несколько менее догматический совет.
В зависимости от того, что вы хотите сделать, может быть целесообразно использовать исходный файл шаблона с текстом, который будет варьироваться и храниться в локальной переменной до получения шаблона.
Что касается хранения кода, выполняемого в БД ... это происходит в некоторых средах, таких как Drupal, для обеспечения удобной расширяемости, но затем Drupal довольно тщательно исследуется на предмет слабых мест безопасности.
Также, если вы пишете самоизменяющийся код, вам нужно использовать eval (). Не уверен, что кто-то делал это в php, но это было бы интересно.