Господа подскажите плиз. В базе данных содержится текст в котором присутствует php код (допустим какое ни будь условие). Вывод я произвожу следующим образом: Код (Text): include ("db.php"); $result = mysql_query ("SELECT * FROM pages WHERE pname='index'"); $textcont = mysql_fetch_assoc($result); <?php echo $textcont["text"]; ?> Беда в том что пхп код он выводит как текст а не кодом. Подскажите что делать?
Что по вашему значит "выводиться кодом"? Если вы хотите что бы текст из БД обрабатывался пхп, то есть выполнялся php код, как будто этот код вписан в самом скрипте - eval вам в помощь. Но главное, запретить юзерам добавлять такой код. И закрыть все дыры для sql injection, а то это дверь к удалению всего вашего сайта, скачиванию его или просто... ну вообщем то считайте что у юзера, который может выполнять пхп код есть все те же возможности что и у вас
База данных существует исключительно для вывода из нее текста. Юзерам доступа нет. Я правильно понимаю? Код (Text): <?php eval ("\$textcont[text] = \"$textcont[text]\";"); echo $textcont["text"]; ?>
Код (Text): <?php include ("db.php"); $result = mysql_query ("SELECT * FROM pages WHERE pname='index'"); $textcont = mysql_fetch_assoc($result); eval($textcont["text"]); Добавлено спустя 2 минуты 37 секунд: Если сайт самописный, особенно без фреймворка, да ещё и с помощью функций mysql_*, есть вероятность наличия дыр для sql injection.
Сайт будет работать в интрасети, общее количество пользователей в сети не более 100 чел. Сеть корпоративная из чего следует что дыры меня пока мало интересуют. Проблема остается. Поправьте плиз код, чет я не так делаю...: Код (Text): <?php eval ("\$textcont[text] = \"$textcont[text]\";"); echo $textcont["text"]; ?>
я же написал код. единственное что, если у вас код начинается с html кода, в котором есть вставки php кода, типа Код (Text): <h1>текст</h1><?php echo $text ?>.... тогда вам в начало нужно добавить ?> то есть не просто Код (Text): eval($textcont["text"]); а Код (Text): eval('?>' . $textcont["text"]);