Перейти к содержимому

Реферальная программа Мегаплана


Обработка PHP-кода - полученного из базы данных

#1 AntonKh

AntonKh
  • Пользователь
  • 11 сообщений
  • Репутация: 0
0

Отправлено 23 Март 2011 - 23:10

Возможно мой вопрос не по теме, но суть вот в чем: Пытаюсь разобраться с типом поля в SQL для для вывода следующей конструкции:
Есть сайт + БД

в БД таблица с полями
id
text (тип TEXT)

в поле text:

текстовая часть(положим абзац)
<?php include ("file.php");?>
текстовая часть(положим абзац)


Проблема в том, что при выводе из БД в странице вы видим все это как текст, а код <?php include ("file.php");?> не исполняется и тоже в виде текста.

Какой должен быть тип поля text чтобы php код исполнялся
Возможно не очень все связно пишу, очень нужно разобраться с этим.

 

 

  • 0

#2 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 23 Март 2011 - 23:17

а в каком типе файла вы выводите php, html?
какие кавычки вы используете при выводе переменных одинарные или двойные?
а зачем в эту конструкцию в БД засунули?
вы бы код полный бы привели
  • 0

#3 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 23 Март 2011 - 23:26

AntonKh,
тип поля ни при чем.
Надо смотреть какой командой это поле text вставляется на страницу.
У вас, скорей всего, там стоит защита от инъекций, потому код и не исполняется.
Так что если хочется чтоб в БД писались исполнимые команды, следует быть осторожным, чтоб дыр не наделать.
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 23 Март 2011 - 23:55

AntonKh, данные же вы получаете из БД в переменную. И если вы их печатаете, то естественно интерпретатор их не подхватит. Есть комманда eval для подобного. Но с ней нужно быть аккуратным.
  • 0

#5 AntonKh

AntonKh
    Topic Starter
  • Пользователь
  • 11 сообщений
  • Репутация: 0

Отправлено 24 Март 2011 - 12:11

Вот сея конструкция

file.php


обращение к БД

<?php 

$result = mysql_query("SELECT * FROM table1 WHERE page='kontakt'",$db);

$myrow = mysql_fetch_array($result);

?>

Вывод из БД текстового поля

<?php echo $myrow['text']; ?>

  • 0

#6 AntonKh

AntonKh
    Topic Starter
  • Пользователь
  • 11 сообщений
  • Репутация: 0

Отправлено 24 Март 2011 - 12:45

AntonKh, данные же вы получаете из БД в переменную. И если вы их печатаете, то естественно интерпретатор их не подхватит. Есть комманда eval для подобного. Но с ней нужно быть аккуратным.


воспользовался советом

<?php
$string = $myrow['text'];
eval ("\$string;");
echo $string;
?>


Но и это не помогает код по прежнему не исполняется вставляет как текст
возможно я взял не правильную конструкцию т.к. код не исполняется, если да то помогите разобраться.
  • 0

#7 Игорян

Игорян
  • Пользователь
  • 296 сообщений
  • Репутация: 10

Отправлено 24 Март 2011 - 12:57

попробуте просто вывести одно поле text так

<?php 

$result = mysql_query("SELECT `text` FROM `table1`",$db);

$myrow = mysql_fetch_assoc($result);

?>


Вывод из БД текстового поля

<?php echo $myrow['text']; ?>


А в mysql заполните text текстом, потом дальше будем думать, по идеи должно все работать.

А где соединение с базой?
  • 0

#8 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 24 Март 2011 - 14:31

AntonKh,
вот так команда, записанная в переменную $text, выполняется
<?php
$text="echo 'test';";
eval ($text);
?>


На всякий случай, конкретно ваш случай со вставкой файла, в котором содержится свой php-код:
file.php:
<div style="border: 1px solid blue; padding: 10px; width: 250px;"><strong>AntonKh</strong>,<br>тип поля ни при чем.</div>
<?php
echo '<div style="border: 1px solid red; padding: 10px; width: 250px;">Надо смотреть какой командой это поле text вставляется на страницу.</div>';
?>

наш тестовый файл, откуда мы обращаемся к БД:
<?php
//вместо следующей строки у вас будет $text = $myrow['text'];
$text="include 'file.php';";
eval ($text);
?>

  • 0

#9 AntonKh

AntonKh
    Topic Starter
  • Пользователь
  • 11 сообщений
  • Репутация: 0

Отправлено 24 Март 2011 - 19:56

Игорян, Дак, собственно это начальная конструкция, которая работает на сайте.
поле Text выводится без проблем.
Поэтому и вопрос возник как выполнить php код находящийся в данном текстовом поле


к базе соединяем

<?php

include ("block/bd.php");

$result = mysql_query("SELECT `text` FROM `table1`",$db);

$myrow = mysql_fetch_assoc($result);


?>

  • 0

#10 AntonKh

AntonKh
    Topic Starter
  • Пользователь
  • 11 сообщений
  • Репутация: 0

Отправлено 24 Март 2011 - 20:08

yury

При конструкции
<?php
$text = $myrow['text'];
eval ($text);
?>

выдает ошибку
Parse error: syntax error, unexpected '<' in /hosting/users/h3009722/www/сайт.ru/страница.php(99) : eval()'d code on line 1
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru