Подтвердить что ты не робот

Как выполнить PHP, который хранится в базе данных MySQL?

Я пытаюсь написать страницу, которая вызывает PHP, который хранится в базе данных MySQL. Страница, которая хранится в базе данных MySQL, содержит код PHP (и HTML), который я хочу запустить при загрузке страницы.

Как я могу это сделать?

4b9b3361

Ответ 1

Для этого вы можете использовать команду eval. Я бы рекомендовал против этого, потому что там много ошибок, используя этот подход. Отладка жесткая (er), это подразумевает некоторые риски безопасности (плохой контент в БД выполняется, о, о).

См. Например, если eval evil в php?. Google для Eval - это зло, и вы найдете много примеров, почему вы должны найти другое решение.

Дополнение: Еще одна хорошая статья с некоторыми ссылками на эксплойты - этот блогпост. Относится к прошлым vBulletin и эксплойтам phpMyAdmin, которые были вызваны неправильным использованием Eval.

Ответ 2

Легко:

$x // your variable with the data from the DB
<?php echo eval("?>".$x."<?") ?>

Дай мне знать, отлично работает для меня в МНОГИХ приложениях, не может не заметить, что все быстро говорят, насколько это плохо, но медленно помогают на самом деле с прямым ответом...

Ответ 3

eval() функция была рассмотрена в других ответах здесь. Я согласен, что вы должны ограничить использование eval, если это абсолютно необходимо. Вместо того, чтобы иметь PHP-код в db, у вас может быть только имя класса, у которого есть метод, называемый execute(). Всякий раз, когда вам нужно запустить свой собственный PHP-код, просто создайте класс имени, который вы только что выбрали из db, и запустите ->execute() на нем. Это намного более чистое решение и дает вам большую гибкость и значительно повышает безопасность сайта.

Ответ 4

Вы можете посмотреть eval в PHP. Он позволяет запускать произвольный PHP-код. Однако это может быть огромным риском для безопасности, и его лучше избегать.

Ответ 5

Рассматривали ли вы использование вашей системы управления версиями для хранения различных вилок для различных установок (и модулей, которые отличаются от них)? Это будет одна из нескольких лучших практик для конфигурации приложения, о которой я могу думать. У вас нет необычного требования, поэтому это проблема, которая была решена другими в прошлом; и сохранение кода в базе данных - это то, о чем я думаю, вам нелегко найти ссылку или посоветоваться как лучшая практика.

Хорошо, что вы опубликовали разъяснение. Вероятно, вы случайно задали ответ в поисках подходящего вопроса.

Ответ 6

Как я это сделал, это иметь поле в базе данных, которое идентифицировало что-то уникальное в блоке кода, который нужно выполнить. Это одно слово находится в имени файла этого кода. Я помещаю строки вместе, чтобы указать на файл php, который будет включен. Пример:

$lookFor = $row['page'];

include("resources/" . $lookFor . "Codebase.php");

Таким образом, даже если хакер мог получить к вам доступ к БД, он не мог помещать в него вредоносный код для выполнения. Возможно, он мог бы изменить ссылочное слово, но если бы он не мог разместить файл прямо на сервере, это не принесло бы ему пользы. Если бы он мог помещать файлы прямо на сервер, вы все равно потопнули, если он действительно хочет быть противным. Только мои два цента стоят.

И да, есть причины, по которым вы захотите выполнить сохраненный код, но есть минусы.

Ответ 7

Прочитайте код php из базы данных и сохраните файл с уникальным именем, а затем включите файл этот простой способ запустить php-код и отладить его.

$uniqid="tmp/".date("d-m-Y h-i-s").'_'.$Title."_".uniqid().".php";    
$file = fopen($uniqid,"w");
fwrite($file,"<?php \r\n ".$R['Body']);
fclose($file);                          
// eval($R['Body']);
include $uniqid;