include в переменную

Статус
В этой теме нельзя размещать новые ответы.
С HTML получилось.

А как инклудить скрипты php?

Например, я хочу инклудить модули, наполнить в переменные $module1, $module2, $module3, а потом вставлять их в шаблон.

<html><body>
<div id="header">...</div>
<div id="left">$module1</div>
<div id="content">$content</div>
<div id="right">$module2, $module3</div>
<div id="footer"></div>
</html></body>

для модулей я создал отдельную папку /modules/, но вот инклудить их до построения шаблона не получается. Пробовал eval(), написанный выше, почему-то не срабатывает.
 
С HTML получилось.
А как инклудить скрипты php?
Например, я хочу инклудить модули, наполнить в переменные $module1, $module2, $module3, а потом вставлять их в шаблон.
<html><body>
<div id="header">...</div>
<div id="left">$module1</div>
<div id="content">$content</div>
<div id="right">$module2, $module3</div>
<div id="footer"></div>
</html></body>
для модулей я создал отдельную папку /modules/, но вот инклудить их до построения шаблона не получается. Пробовал eval(), написанный выше, почему-то не срабатывает.

ну видимо потому что ваш текст не является скриптом пхп. чтобы все сработало надо его переписать как то так:

Код:
<html><body>
<div id="header">...</div>
<div id="left"><?=$module1?></div>
<div id="content"><?=$content?></div>
<div id="right"><? print "$module2, $module3"?></div>
<div id="footer"></div>
</html></body>
 
ну видимо потому что ваш текст не является скриптом пхп. чтобы все сработало надо его переписать как то так:
Код:
<html><body>
<div id="header">...</div>
<div id="left"><?=$module1?></div>
<div id="content"><?=$content?></div>
<div id="right"><? print "$module2, $module3"?></div>
<div id="footer"></div>
</html></body>

Я так и делаю, но содержимое подключенного файла почему то не интерпретируется и выводится как есть. А вообще такая структура сайта правильная?
 
начало и коцен кода если так есть хтмл должны быть в <?php ?>

а нулчше ли

<?php
echo'
<html><body>
<div id="header">...</div>
<div id="left">'.$module1.'</div>
<div id="content">'.$content.'</div>
<div id="right">'.$module2.$module3.'</div>
<div id="footer"></div>
</html></body>
';
?>
или вообще придумать шаблонизатор
 
Код:
if (is_readable($put_do_shablona)){
$txt=file_get_contents($put_do_shablona);
eval("\$txt = \"$txt\";"); // в результате у Вас в $txt будет уже заполненный шаблон. 
}

Однако таким кодом легко делать xss и разного рода иньекции, т.к. что хранится в переменных $module1, $content, $module2, $module3 известно только заполнявшему эти данные.

удобнее шаблон представлять в виде:
<div id="left">{module1}</div>
В результате код будет выглядеть так:

Код:
if (is_readable($put_do_shablona)){
$txt=file_get_contents($put_do_shablona);
$txt = str_replace('{module1}',$module1, $txt); // в результате у Вас в $txt будет уже заполненный шаблон. 
}
 
Код:
if (is_readable($put_do_shablona)){
$txt=file_get_contents($put_do_shablona);
eval("\$txt = \"$txt\";"); // в результате у Вас в $txt будет уже заполненный шаблон. 
}
Однако таким кодом легко делать xss и разного рода иньекции


а можно для наглядности посмотреть пример инжекта в примере выше?
 
а можно для наглядности посмотреть пример инжекта в примере выше?

Код:
eval ("echo '1'; [B]system('format c:/');[/B] echo '2';");
На счет всех кавычек не уверен. Но смысл именно такой.
При этом уязвимость возможна только при формирование выполняемого кода под eval простым пользователем. Самый простой вариант - гостевая книга.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху