2015-03-01 2 views
0

В файле моего читателя я проверяю $ _GET и читаю запись из базы данных.Включите PHP-файл, который содержит код PHP

У меня есть схема контактной информации. Сохранено в файле "contact.php". Но в базе данных я просто использовал «[контакт]» как текст.

Так вот, что я делаю для вызова этого файла contact.php:

$contactinfo = file_get_contents('contact.php'); 
$mydata = str_replace("[contact]", $contactinfo, $mydata); 
return html_entity_decode($mydata); 

Это отлично работает. Потому что мой файл "contact.php" ТОЛЬКО СОДЕРЖИТ HTML.

Вот моя проблема. У меня есть другой файл, «contactform.php». Эта форма содержит HTML и метод PHP для заполнения выбранного ввода с помощью городов. Я имею в виду, мой файл «contactform.php» выглядит так:

<form> 
Name: <input name bla bla> 
Email: <input email bla bla> 
City: <?php getcities(); ?> 
<input submit bla bla> 
</form> 

Я использую тот же самый метод. Но я получаю только:

<form> 
Name: <input name bla bla> 
Email: <input email bla bla> 
City: <!-- <?php getcities(); ?> --> 
<input submit bla bla> 
</form> 

Моя часть PHP преобразуется в строку комментария. Другие части прекрасно работают. Как я могу решить эту проблему?

+0

Я думаю, что вы приближаетесь к проблеме в неправильном направлении. Ответ на этот вопрос усугубит ситуацию. – MegaAppBear

+0

так показывайте мне правильный путь? – Diga

ответ

0

Если вы можете выделить строку с каким-то регулярным выражением, то eval() сделает трюк.

0

Вам необходимо изменить логику и заменить файл_get_contents на require ИЛИ include ИЛИ require_once ИЛИ include_once.

Вам необходимо изменить код

ob_start(); 
require('contact.php'); 
$contactinfo = ob_get_clean(); 
$mydata = str_replace("[contact]", $contactinfo, $mydata); 
return html_entity_decode($mydata); 

или, если использовать ob_get_contents

ob_start(); 
echo "You main script, before contact "; 

ob_start(); 
echo "contact form"; 
$ob_2 = ob_get_contents(); 
ob_end_clean(); 

echo "and after contact"; 
$ob_1 = ob_get_contents(); 
ob_end_clean(); 

echo "This is OB_1: ".$ob_1."\n"; //returned "This is OB_1: You main script, before contact and after contact" 
echo "This is OB_2: ".$ob_2."\n"; //returned "This is OB_2: contact form" 
+0

Как вы можете включить файл динамически? Я храню созданный пользователями html в моей базе данных. пользователь не знает php. пользователю нужно только добавить что-то вроде [contactform], чтобы добавить форму контакта на странице. – Diga

+0

см. Мои изменения в ответе – FlintOFF

+0

Я уже использую ob_start в верхней части моей страницы (для заголовка (местоположения)). это проблема? также, можете ли вы получить несколько файлов с помощью этого метода? – Diga

Смежные вопросы