Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вставка результата выполнения PHP в HTML

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
sslion
Отправлено: 11 Июня, 2010 - 08:45:30
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2010  


Помог: 0 раз(а)




Проблема следующая:
Есть шаблон ХТМЛ в коде которого есть метки типа {metka}, {data}, которые в ходе выполнения скрипта ПХП заменяются функцией str_replace на данные, {data} - соответственно заменяется на дату и т.п.

Но появилась необходимость вставлять вместо некоторых меток результат работы ПХП хранящихся базе данных.
Я пробовал что-то типа: $result = eval($script);
но эти скрипты сами используют вывод через echo, т.е.
сразу напрямую в браузер, но мне нужно "перехватить" вывод, занести его в переменную, чтобы потом "впихнуть" в нужное место. Может есть другие функции?

Да, еще eval не подходить по другой причине: он требует "чистого ПХП, т.е. как минимум без открывающего <?
а у меня все сскрипты в базе храняnся ввиде <? echo "hello!"; ?>
 
 Top
garvey
Отправлено: 11 Июня, 2010 - 09:14:19
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




Используй шаблонизатор Smarty, если это не ты его используешь. Ведь переменные Smarty как раз имеют такой вид {$metka}.
Подключаешь Smarty и в обработчеке пишешь $Smarty -> assign ("metka", $metka);
 
 Top
sslion
Отправлено: 11 Июня, 2010 - 09:31:55
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2010  


Помог: 0 раз(а)




garvey пишет:
Используй шаблонизатор Smarty...

Я уже думал над этим, но этот "монстр" намного больше чем сама "начинка" моего сайта (не считая конечно данных в базе). Радость

Попробую объяснить проблему по-другому:
Из базы в переменную $script читаем PHP скрипт такого вида:

В другую переменную $tpl из HTML файла читаем шаблон.
Далее нужно выполнить код находящийся в $script и получить результат в переменной $buf, т.е. в $buf должна оказаться строка "hello!" (без кавычек).
Потом нужно выполнить:
А потом уже "отдать" браузеру:

Зачем мне для этого Smarty? Однако

(Отредактировано автором: 11 Июня, 2010 - 09:34:52)

 
 Top
garvey
Отправлено: 11 Июня, 2010 - 09:41:36
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




На самом деле, это какая-то очень глупая система.
Почему нельзя сделать так
script.php

index.php
PHP:
скопировать код в буфер обмена
  1. require_once ("script.php");
  2. $buf = $hello;
  3. $tpl = str_replace('{metka}', $buf, $tpl);
  4. echo $tpl;
 
 Top
altermann
Отправлено: 11 Июня, 2010 - 10:03:57
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


Помог: 6 раз(а)




sslion пишет:
нужно "перехватить" вывод


Функции перехвата вывода http://www.php.su/functions/?ob_start


-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
sslion
Отправлено: 11 Июня, 2010 - 10:29:09
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2010  


Помог: 0 раз(а)




altermann пишет:
sslion пишет:
нужно "перехватить" вывод


Функции перехвата вывода http://www.php.su/functions/?ob_start


Ай, вай, вай!
И что доктор прописал!

С меня пиво! Подмигивание
 
 Top
JustUserR
Отправлено: 11 Июня, 2010 - 15:43:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




altermann пишет:
Функции перехвата вывода
В принципе с помощью функцию перехвата вывода то есть буферазиции можно достингуть требуемого эффекта - но надо учитывать что при передаче управления подключемому PHP-скрипту он получает возможность выключить буферизацию По этой причине все подключамые данные нужно проверять не только на синтаксис http://php.su/functions/?runkit-lint-file чтобы не получить фатальной ошибки - но и перед запуском кода сделать его фильтрацию на полный перехват кода


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
sslion
Отправлено: 11 Июня, 2010 - 16:00:54
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2010  


Помог: 0 раз(а)




JustUserR пишет:
altermann пишет:
Функции перехвата вывода
В принципе с помощью функцию перехвата вывода то есть буферазиции можно достингуть требуемого эффекта - но надо учитывать что при передаче управления подключемому PHP-скрипту он получает возможность выключить буферизацию По этой причине все подключамые данные нужно проверять не только на синтаксис http://php.su/functions/?runkit-lint-file чтобы не получить фатальной ошибки - но и перед запуском кода сделать его фильтрацию на полный перехват кода

Дельный совет! Спасибо!
 
 Top
JustUserR
Отправлено: 11 Июня, 2010 - 16:13:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




sslion пишет:
Дельный совет! Спасибо!
Пожалуйста! Что касается фильтрации PHP-кода то это является достаточно сложной задачей поскольку PHP-код может быть динамически - поэтому можно оставить требования к подключаемым модулям содеражать только статические функции Вы можете посмотреть на огранизацию уже готового фильтра http://dklab[dot]ru/lib/PHP_CodeFilter/ - и вероятно использовать оттуда какие-либо функции


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB