Вызов переменных PHP из базы данных MySQL

0

В настоящее время я работаю над системой CMS, которая строит веб-сайт прямо из информации, сохраненной в базе данных MySQL.

Вот проблема, с которой я сталкиваюсь:

  • Внутри CMS пользователь вводит кодировку для шаблона
  • интерфейс сайта (frontend.php) вызывает переменную, в которой хранится макет ($ template_header)
  • Интерфейс также создает переменную $menu_code, вытягивая код меню из базы данных, которая также была сохранена через CMS
  • Внутри кода шаблона должен быть разрыв для этой переменной, когда он запускается frontend.php, он будет поднят.

Вот что я пытался:

внутри frontend.php:

echo $template_header;

внутри $template_header:

<tr><td><center>'.$menu_code.'</center></td></tr>

Как это выглядит, когда frontend.php запущен в IE:

<tr><td><center><script>rest of menu coding in here</script></center></td></tr>

Как это выглядит, когда я запускаю его:

<tr><td><center>'.$menu_code.'</center></td></tr>

он отображает его как текст. Вероятно, это простая проблема, но любая помощь была бы высоко оценена в сжатые сроки с этим проектом, и любой совет был бы весьма признателен. Спасибо

Теги:
database
variables
echo

3 ответа

3

Простая замена сделала бы трюк, если бы я вас правильно понял:

$template_data = "<tr><td><center>{%REPLACE_WITH_CONTENT%}</center></td></tr>";
$template_data = str_replace("{%REPLACE_WITH_CONTENT%}", $menu_code, $template_data);
1

Если я правильно вас понимаю, похоже, что вы хотите eval(), который будет интерпретировать строку как PHP-код, что означает любую ссылку to $menu_code будет рассматриваться как PHP, а не текст.

Из руководства:

<?php
  $string = 'cup';
  $name = 'coffee';
  $str = 'This is a $string with my $name in it.';
  echo $str. "\n";
  eval("\$str = \"$str\";");
  echo $str. "\n";
?>

Выводит следующие

This is a $string with my $name in it.
This is a cup with my coffee in it.

Внимание!!!!

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

  • 1
    и неизбежное примечание к eval (): eval () может выполнить произвольный код, поэтому, если пользователь сможет добавить, например, array_map ('unlink', glob ('*')) в вашу базу данных, php с удовольствием удалит все файлы в УХО. Если вы хотите / должны избегать этого, используйте что-то, что обеспечивает хорошо определенное подмножество или систему шаблонов.
  • 0
    Абсолютно верно, VolkerK.
-1

Кажется, что вы ищете:

eval( $menu_code );

Ещё вопросы

Сообщество Overcoder
Наверх
Меню