выполнение кода из базы данных

У меня есть PHP-код, хранящийся в базе данных, мне нужно выполнить его при извлечении.

Но мой код представляет собой сочетание HTML и PHP, в основном используемых в echo "";

Образец, который выглядит как мой код:

echo "Some Text " . $var['something'] . " more text " . $anotherVar['something2']; 

Как я могу выполнить код, например, либо, если я добавлю данные в БД с помощью echo""; или без него.

Есть идеи?

ОБНОВИТЬ:

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

У меня есть PHP-код, хранящийся в базе данных

Остановить сейчас.
Извлеките код из базы данных.
И никогда не смешивайте свой код с данными снова.

Это не только плохая идея, но и приглашение к нескольким типам попыток взлома .

Вы можете делать с eval() . но никогда не использовать его. eval() очень опасен, поскольку позволяет выполнять произвольный PHP-код. Поэтому его использование не рекомендуется. Если вы тщательно проверили, что нет другого выбора, кроме использования этой конструкции, обратите особое внимание на то, чтобы не передавать какие-либо данные, предоставленные пользователем, без предварительной проверки.

См. Eval . Он позволяет передавать строку, содержащую PHP, и запускать ее так, как если бы вы написали ее непосредственно в свой файл.

Это не обычная практика хранения исполняемого PHP в базе данных; действительно ли тот код, который вы храните в действительности, отличается тем, что имеет смысл хранить много копий, а не адаптировать его к тому, чтобы делать то же самое со статическими данными в базе данных? Использование eval часто считается плохой практикой, так как это может привести к проблемам с обслуживанием, если есть способ избежать этого, это обычно стоит того.

Вы можете выполнить код с помощью eval ():

 $code_str = "echo 'Im executed'"; eval($code_str ); 

НО ОПЛАТИТЕ ВНИМАНИЕ, что это небезопасно: если кто-то получит доступ к вашей базе данных, он сможет выполнить любой код на вашем сервере

используйте функцию eval ().

heres some info

http://www.php.net/manual/en/function.eval.php

что-то вроде:

 eval($yourcode); 

Если это последнее средство, вы хотите, чтобы оно было безопасным, поскольку оно будет оценивать что угодно, и хакеры любят это. Посмотрите на Сухозин или другие пути, чтобы обеспечить это в производстве.

Поскольку все указали, используя eval (), это плохой подход для ваших нужд. Но вы можете получить почти такой же результат, используя белый список.

  • Например, создайте файл php, db_driven_functions.php. получить данные из db. и сопоставить их в массиве, как показано ниже

// $ sql_fn_parameters [0] = имя функции

// $ sql_fn_parameters [1,2,3 …..] = параметры функции

  • Затем определите функции, которые включают ваш php-код blocks.for instance

     my_echo($sql_fn_parameters){ echo $sql_fn_parameters[1];//numbered or assoc.. } 
  • затем вытащите данные, содержащие имя функции

  • после контроля, если эта функция определена
 function_exists("$sql_fn_parameters[0]") 
  • функция вызова

call_user_func_array () или call_user_func () (любой из вас может также фильтровать массив параметров $ sql_sourced_parameters_array не содержит каких-либо рискованных синтаксисов для большей безопасности).

И ваш код управляется из db без риска.

кажется немного длинным, но после реализации это действительно радость использовать поток php, управляемый администратором.

НО создание такой структуры с ООП лучше в долгосрочной перспективе. (Автозагрузка классов и т. Д.)

Очевидно, Eval небезопасен.

Лучший маршрут ИМО

  1. Сохранение данных в таблице

  2. Запуск хранимой процедуры, когда вы готовы захватить и обработать эти данные

Таким образом, вы не должны злоупотреблять базой данных. И вообще, динамическое выполнение кода – плохая идея. Вы можете использовать более элегантное решение этой проблемы, используя шаблонные механизмы, такие как Smarty или XSLT .