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 в шаблоне

 PHP.SU

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


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

> Без описания
sklins
Отправлено: 12 Ноября, 2010 - 17:52:17
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2010  


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




Собственно вот template.php, как заставить его выполнять пхп код? Из-за одной строки кода в шаблоне не охото ставить смарти и подобные.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class parse_class
  3. {
  4. var $vars = array();
  5. var $template;
  6.  
  7. function get_tpl($tpl_name)
  8. {
  9. if(empty($tpl_name) || !file_exists($tpl_name))
  10. {
  11. return false;
  12. }
  13. else
  14. {
  15. $this->template = file_get_contents($tpl_name);
  16. }
  17. }
  18. function set_tpl($key,$var)
  19. {
  20. $this->vars[$key] = $var;
  21. }
  22. function tpl_parse()
  23. {
  24. foreach($this->vars as $find => $replace)
  25. {
  26. $this->template = str_replace($find, $replace, $this->template);
  27. }
  28. }
  29. }
  30. $parse = new parse_class;
  31.  
  32. ?>
  33.  
 
 Top
vlom
Отправлено: 12 Ноября, 2010 - 18:27:44
Post Id



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


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


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




так же задумался над этим вопросом, подумал что лучше будет сначало перехватить выходной поток php шаблона в буфер а затем уже работать с содержимым буфера как со строкой.
содержимое функции функции get_tpl заменить на:
PHP:
скопировать код в буфер обмена
  1.  
  2. if(empty($tpl_name) || !file_exists($tpl_name)){
  3.   return false;
  4. }else{
  5.   ob_start();
  6.     include "$tpl_name";
  7.   $this->template = ob_get_contents();
  8. }
  9.  

как-то примерно так, может ещё есть у кого мысли по этому поводу???

(Отредактировано автором: 12 Ноября, 2010 - 18:30:40)

 
 Top
Варяг
Отправлено: 13 Ноября, 2010 - 09:19:41
Post Id



Новичок


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


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




вы же написали:
PHP:
скопировать код в буфер обмена
  1. class parse_class
  2. {
  3. private $vars = array();
  4. private $template;
  5.  
  6.   function __construct(){
  7. //эта функция выполнится автоматом при создании объекта.
  8.   }
  9. }
  10. $parse = new parse_class(); //только скобок не хватает, в них можно добавить параметр, который выполнится в конструкторе класса
  11.  
  12.  


вот так вы заставите выполнять этот код. Конечно, если я Вас правильно понял.

(Отредактировано автором: 13 Ноября, 2010 - 09:20:41)

 
 Top
JustUserR
Отправлено: 14 Ноября, 2010 - 01:22:29
Post Id



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


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


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




sklins Для осуществление выполнение программного кода PHP-скрипта включение которого обеспечивается в форме использование шаблона для генерации содержимого для целевого пользовательского запроса - возможно применение различных схем безопасной реализации указанной задачи В частности одним из факторов осуществления указанного подключение является предваренное контролирование уровня преставления загружаемой информации и обеспечение передачи управления текущего потока - осуществление мануального контроля с достаточной безопасностью может быть достинуто посреством предварительной фильрации исполняемого программного кода с обеспечением его адаптации у требуемый уровень трактования - или использование модуля runkit с функциональностью sandboxing для реализации безопасной интерпретаци целевого PHP-кода средствам исходного транслятора в управляемой программной компоненте


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный 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