За последние 24 часа нас посетили 71967 программистов и 1649 роботов. Сейчас ищут 925 программистов ...

Вывод из базы данных

Тема в разделе "PHP для новичков", создана пользователем JohnBraxton, 4 апр 2012.

  1. JohnBraxton

    JohnBraxton Активный пользователь

    С нами с:
    13 окт 2011
    Сообщения:
    44
    Симпатии:
    1
    Господа подскажите плиз. В базе данных содержится текст в котором присутствует php код (допустим какое ни будь условие). Вывод я произвожу следующим образом:

    Код (Text):
    1. include ("db.php");
    2. $result = mysql_query ("SELECT * FROM pages WHERE pname='index'");
    3. $textcont = mysql_fetch_assoc($result);
    4.  
    5. <?php echo $textcont["text"]; ?>
    Беда в том что пхп код он выводит как текст а не кодом. Подскажите что делать?
     
  2. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    Что по вашему значит "выводиться кодом"?

    Если вы хотите что бы текст из БД обрабатывался пхп, то есть выполнялся php код, как будто этот код вписан в самом скрипте - eval вам в помощь.

    Но главное, запретить юзерам добавлять такой код. И закрыть все дыры для sql injection, а то это дверь к удалению всего вашего сайта, скачиванию его или просто... ну вообщем то считайте что у юзера, который может выполнять пхп код есть все те же возможности что и у вас :)
     
  3. JohnBraxton

    JohnBraxton Активный пользователь

    С нами с:
    13 окт 2011
    Сообщения:
    44
    Симпатии:
    1
    База данных существует исключительно для вывода из нее текста. Юзерам доступа нет.

    Я правильно понимаю?
    Код (Text):
    1. <?php
    2. eval ("\$textcont[text] = \"$textcont[text]\";");
    3. echo $textcont["text"];
    4. ?>
     
  4. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    Код (Text):
    1. <?php
    2. include ("db.php");
    3. $result = mysql_query ("SELECT * FROM pages WHERE pname='index'");
    4. $textcont = mysql_fetch_assoc($result);
    5.  eval($textcont["text"]);
    Добавлено спустя 2 минуты 37 секунд:
    Если сайт самописный, особенно без фреймворка, да ещё и с помощью функций mysql_*, есть вероятность наличия дыр для sql injection.
     
  5. JohnBraxton

    JohnBraxton Активный пользователь

    С нами с:
    13 окт 2011
    Сообщения:
    44
    Симпатии:
    1
    Сайт будет работать в интрасети, общее количество пользователей в сети не более 100 чел. Сеть корпоративная из чего следует что дыры меня пока мало интересуют. Проблема остается. Поправьте плиз код, чет я не так делаю...:
    Код (Text):
    1. <?php
    2. eval ("\$textcont[text] = \"$textcont[text]\";");
    3. echo $textcont["text"];
    4. ?>
     
  6. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    я же написал код.
    единственное что, если у вас код начинается с html кода, в котором есть вставки php кода, типа
    Код (Text):
    1. <h1>текст</h1><?php echo $text ?>....
    тогда вам в начало нужно добавить ?>
    то есть не просто
    Код (Text):
    1. eval($textcont["text"]);
    а
    Код (Text):
    1. eval('?>' . $textcont["text"]);
     
  7. JohnBraxton

    JohnBraxton Активный пользователь

    С нами с:
    13 окт 2011
    Сообщения:
    44
    Симпатии:
    1
    Я извиняюсь, Я не посмотрел на выложенный Вами код! СПАСИБО ОГРОМНОЕ ВСЕ РАБОТАЕТ!