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 :: Переписываем старый шаблонизатор [2]

 PHP.SU

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


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

> Описание: Нужно чуточку больше функций и пару исправлений
Платинум
Отправлено: 19 Апреля, 2010 - 21:09:06
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Апр. 2009  
Откуда: Пермь


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




JustUserR, немогли бы вы попонятнее объяснить как исправить, тот случай когда подключаеш ***.php файл и скрипт не выполняется, а на экран выходит "1".
Спасибо.
 
My status
 Top
JustUserR
Отправлено: 20 Апреля, 2010 - 13:34:49
Post Id



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


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


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




Платинум пишет:
JustUserR, немогли бы вы попонятнее объяснить как исправить, тот случай когда подключаеш ***.php файл и скрипт не выполняется, а на экран выходит "1". Спасибо.
Дело в том что функция include в случае успешного подключения указанного файла возвращает значение истины - однако в случае попытки сделать echo include(somefile) это значение приводится к строке и показывается единица
Что касается того вопроса почему не выполняется подключаемый файл Во-первых содержит ли он какой-то исполняемый код вне функций - если не содержит то очевидно что выполнение будет происходить только при вывозе определенной функци Если же содержит то ситуация не лучше - ведь подключаемый исполняемый код не контролируется вашим PHP-скриптом - и если вы например включили буферизацию то подключаемый PHP-скрипт может с таким же успехом ее выключить По этой причине лучше подключать только PHP-библиотеки или если хочется подключать обычный PHP-скрипт то парсить его на согласнованность с текущим - как пример использовать его как шаблон


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Платинум
Отправлено: 20 Апреля, 2010 - 14:03:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Апр. 2009  
Откуда: Пермь


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




JustUserR пишет:
если хочется подключать обычный PHP-скрипт то парсить его на согласнованность с текущим - как пример использовать его как шаблон


а можно какой нибудь пример привести, а то моему уму не особо понятно.
 
My status
 Top
JustUserR
Отправлено: 20 Апреля, 2010 - 14:13:05
Post Id



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


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


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




Платинум пишет:
А можно какой нибудь пример привести, а то моему уму не особо понятно.
Пример здесь достаточно сложный но я попробую объяснить более конкретно Например у вас имеется подключаемый PHP-скрипт в котором находится вывод определенного дизайна страницы - если вся архитектура продумана хорошо то PHP-скрипт который обрабатывает данные из БД и тот который генерирует дизайн работают согласованно и не мешают друг другу Если же например генератор дизайна написан еще кем-то и не согласован с вашим PHP-скриптом по обработке данных то можно сделать так - вы открываете файл генератора дизайна и в нем осуществяете все подствонвки переменных с экранированием и сохраняете его во временный файл .php - после чего фактчески останавливаете свой PHP-скрипт и подкючаете PHP-скрипт с дизайном который уже делает весь вывод
Если же пробовать подключать несогласованный PHP-скрипт просто так без обработки то может ничего и не вывестись - даже если рассичтывать на то что все данные с подключаемого PHP-скрипта будут буферизированы В таком случае уж лучше обратиться к нему через /usr/bin/links к примеру и получить результаты его работы - или обмениваться даннми через текстовый файл


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



Новичок


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


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




Люди, я готов заплатить 250 максимум 300 рублей, за эту небольшую работу - дописать функцию в этом шаблонизаторе, что бы можно было подключать пхп-файлы в шаблон.
Кого интересует, ищите контакт со мной, в моём блоге chuikoff.ru
Спасибо!
 
 Top
JustUserR
Отправлено: 11 Мая, 2010 - 10:39:56
Post Id



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


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


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




chuikoff пишет:
Дописать функцию в этом шаблонизаторе, что бы можно было подключать пхп-файлы в шаблон
А в чем у вас проблема ведь в этой теме достаточно хорошо освещен вопрос подключения PHP-скриптов - только вам надо определиться со способом их включения поскольку ключение произвольного PHP-кода без предварительного согласования малоэффективно - и даже если вы заранее включите буферизацию то включамемый PHP-скрипт сможет ее без труда выполнить


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



Новичок


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


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




Я вчера нашёл на руселлере интересный вариант кода, но его нужно тоже переписать.
Вот исходник:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. function parseText($element){
  3. // Функция ищет в $element участки [php]Код[/php] и выполняет их как php-код,
  4. // Полученным результатом заменяет найденные участки [php]Код[/php]
  5. $element = preg_replace('/\s{2,}/iu', '', $element);
  6. $result = preg_replace_callback('~\[php\](.*)\[\/php\]~ui',
  7. create_function('$matches','
  8. ob_start();
  9. eval($matches[1]);
  10. $result = ob_get_contents();
  11. ob_end_clean();
  12. return $result;
  13. '),
  14. $element);
  15. return $result;
  16. }
  17. ?>
  18.  <h3 style="color: blue;"> Отдали функции: </h3>
  19.  <?php echo $example1?> <h3 style="color: blue;"> Функция вернула:</h3>
  20.  <?php echo parseText($example1)?>
  21.  


Вот переписанный исходник:
PHP:
скопировать код в буфер обмена
  1.  
  2. function inc_tpl_file($key,$element){
  3.  $element = preg_replace('/\s{2,}/iu', '', $element);
  4.  $result = preg_replace_callback('~\[php\](.*)\[\/php\]~ui',
  5.  create_function('$matches','
  6. ob_start();
  7. eval($matches[1]);
  8. $result = ob_get_contents();
  9. ob_end_clean();
  10. return $result;
  11. '),
  12.  $element);
  13.  $this->vars[$key] = $result;
  14.  }
  15.  

Только непонятно, работает или нет.
(Добавление)
Нет, вообще не работает. просто отображает путь
PHP:
скопировать код в буфер обмена
  1. //подключаем Rating
  2. $rating = "ext/rat/index.php";
  3. $parse->inc_tpl_file('{RATING}',$rating);

(Отредактировано автором: 14 Июня, 2010 - 01:41:57)

 
 Top
JustUserR
Отправлено: 14 Июня, 2010 - 12:14:03
Post Id



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


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


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




chuikoff пишет:
Вот переписанный исходник
Как минимум недостаток данного PHP-скрипта заключается в том что принимаемый PHP-код для выполнения не проходит никакой предваритальной проверки и фильтрации - это значит что он может содержать синтаксическую ошибку или к примеру может перехватить управление и выключить буферизацию
Что касается конкретно вашего случая то видно что PHP-код исполняется только внутри тега [РНР] - поэтому вам нужно заключить значение строки $rating в соответствующие теги


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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB