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 :: index.php не иполняется код php вставленный в html

 PHP.SU

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


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

> Без описания
CeBePHb1Y
Отправлено: 11 Января, 2013 - 08:06:24
Post Id


Новичок


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


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




index.php не иполняется код php вставленный в html, пример:
есть файлы:
index.php - исполняемый файл
main.tpl - файл c html кодом, в нем есть текст [!mod!]
mod.php - файл модуля, который выводит с помощью echo содержимое шаблона mod.tpl
mod.tpl - шаблон мода (html код)

код файлов:
index.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $site=file_get_contents('main.tpl');
  3. $contmod=file_get_contents('mod.php');
  4. $site=str_replace('[!mod!]',$contmod,$site);
  5. //выводим сайт на экран
  6. echo $site;
  7. ?>


main.tpl
CODE (html):
скопировать код в буфер обмена
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html lang="ru" xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. </head>
  5. <body>
  6. <div id="main">
  7. [!mod!]
  8. [!header!]
  9. [!menu!]
  10. </div>
  11. </body>
  12. </html>


mod.php


mod.tpl
CODE (html):
скопировать код в буфер обмена
  1. <div id="mod">YAHOO!</div>


в итоге код php не исполняется а просто вставляется в html:
исходный код страницы:
CODE (html):
скопировать код в буфер обмена
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html lang="ru" xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. </head>
  5. <body>
  6. <div id="main">
  7. [u]<?php
  8. $mod=file_get_contents('mod.tpl');
  9. echo $mod;
  10. ?>[/u]
  11. [!header!]
  12. [!menu!]
  13. </div>
  14. </body>
  15. </html>

как победить недуг? на другом сервере все работало.
стоит xammp, его настройки не трогал, может настроен не так?
идея такая есть модуль php, и его нужно вставить в шаблон страницы вместо [!mod!] и вывести на экран этот шаблон уже с модулем php, причем чтобы он исполнился, вот что мне нужно. как можно это сделать?


Отредактировано модератором: Мелкий, 11 Января, 2013 - 08:38:10
 
 Top
Мелкий Супермодератор
Отправлено: 11 Января, 2013 - 08:41:36
Post Id



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


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


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




CeBePHb1Y пишет:
на другом сервере все работало.

Чего быть не может.
file_get_contents читает бинарно файлик. Будь тот хоть чем, даже PHP-кодом, исполнять его никто и не вздумает.
А echo честно выводит этот поток байтов, опять же и не думая его как-то интерпретировать.


-----
PostgreSQL DBA
 
 Top
CeBePHb1Y
Отправлено: 11 Января, 2013 - 09:00:48
Post Id


Новичок


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


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




Мелкий пишет:
Чего быть не может.

просто исходник не сохранился писал по памяти, может что не дописал\не так написал.
и все же вопрос остается, как же
Мелкий пишет:
идея такая есть модуль php, и его нужно вставить в шаблон страницы вместо [!mod!] и вывести на экран этот шаблон уже с модулем php, причем чтобы он исполнился, вот что мне нужно. как можно это сделать?

как же сделать? просто модулей будет много, они будут браться из бд и нужно чтобы каждый исполнился в шаблоне на своем месте, т.е. для каждого модуля будет разная метка "[!!]"
 
 Top
LShark
Отправлено: 11 Января, 2013 - 10:38:24
Post Id



Частый гость


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


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




Думаю, не file_get_contents(), а require() или include() + другой принцип замены.

И будет вам счастье.
(Добавление)
Ну или делаешь такую замену, сохраняешь полученное на диск и ЗАТЕМ запускаешь на выполнение свежесохраненное.

(Отредактировано автором: 11 Января, 2013 - 10:40:52)



-----
Истина прежде всего в том, что...
 
 Top
DelphinPRO
Отправлено: 11 Января, 2013 - 11:14:25
Post Id



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


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


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




PHP:
скопировать код в буфер обмена
  1. $site=file_get_contents('main.tpl');
  2.  
  3. include 'mod.php';
  4. $contmod=ob_get_clean();
  5.  
  6. $site=str_replace('[!mod!]',$contmod,$site);
  7.  
  8. //выводим сайт на экран
  9. echo $site;


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
OrmaJever Модератор
Отправлено: 11 Января, 2013 - 11:26:11
Post Id



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


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


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




хммм.. Увидев два одинаковых по результату подхода, решил выяснить какой из них всётаки быстрее.
И очевидно оказалось что

в два раза быстрее чем


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
CeBePHb1Y
Отправлено: 11 Января, 2013 - 14:44:22
Post Id


Новичок


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


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




LShark пишет:
Ну или делаешь такую замену, сохраняешь полученное на диск и ЗАТЕМ запускаешь на выполнение свежесохраненное.

а большинство хостингов разрешит скрипту записать на диск файл php?
 
 Top
esterio
Отправлено: 11 Января, 2013 - 14:55:28
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




CeBePHb1Y пишет:
а большинство хостингов разрешит скрипту записать на диск файл php?

Да
 
 Top
DelphinPRO
Отправлено: 11 Января, 2013 - 17:09:09
Post Id



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


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


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




OrmaJever пишет:
Увидев два одинаковых по результату подхода, решил выяснить какой из них всётаки быстрее.

некорректное сравнение. в первом случае не выполняется php код, во втором выполняется Улыбка функциональность разная. если и сравнивать, то с eval()


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
esterio
Отправлено: 11 Января, 2013 - 18:52:02
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




DelphinPRO пишет:
некорректное сравнение. в первом случае не выполняется php код, во втором выполняется функциональность разная. если и сравнивать, то с eval()


Ну а если делать вывод чистого html , то тогда все коректно. А если ето какой-нибуть темплейт вида %var% - то и спарсить можно будет во втором варианте также как и в первом. Но я б так точно не делал бы.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB