Вместо включения ваших скриптов в основной шаблон сайта вы должны делать совсем наоборот - включать ваши шаблоны в скрипты PHP.
Вы можете адресовать свои сценарии отдельно или создать единую точку входа. Оба метода не сильно отличаются друг от друга, но я бы посоветовал использовать первый для начала.
Итак, ваш сайт состоит из страниц, шаблонов страниц и основного шаблона.
Как только ваш скрипт вызван, он должен обработать данные, а затем загрузить шаблон сайта, который, в свою очередь, загрузит шаблон страницы.
Пример макета будет выглядеть так:
страница:
<?
//include our settings, connect to database etc.
include dirname($_SERVER['DOCUMENT_ROOT']).'/cfg/settings.php';
//getting required data
$DATA=dbgetarr("SELECT * FROM links");
$pagetitle = "Links to friend sites";
//etc
//and then call a template:
$tpl = "links.tpl.php";
include "template.php";
?>
выводит ничего , но собирает только необходимые данные и вызывает шаблон:
template.php
который является вашим основным шаблоном сайта,
состоит из вашего верхнего и нижнего колонтитула:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My site. <?=$pagetitle?></title>
</head>
<body>
<div id="page">
<? include $tpl ?>
</div>
</body>
</html>
и вызывает фактический шаблон страницы:
<h2><?=$pagetitle?></h2>
<ul>
<? foreach($DATA as $row): ?>
<li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li>
<? endforeach ?>
<ul>
Для формы хорошей идеей будет сделать действие формы той же самой страницей (так что вы можете оставить действие формы просто пустым).
Запрос будет отправлен на ту же страницу, вверху которой вы можете поместить код, подобный следующему:
<?
if ($_SERVER['REQUEST_METHOD']=='POST') {
$err = array();
//performing all validations and raising corresponding errors
if (empty($_POST['name']) $err[] = "Username field is required";
if (empty($_POST['text']) $err[] = "Comments field is required";
if (!$err) {
//if no errors - saving data and redirect
header("Location: ".$_SERVER['PHP_SELF']);
exit;
} else {
// all field values should be escaped according to HTML standard
foreach ($_POST as $key => $val) {
$form[$key] = htmlspecialchars($val);
}
} else {
$form['name'] = $form['comments'] = '';
}
$tpl = "form.tpl.php";
include "template.php";
?>
он обработает ваши данные и либо перенаправит на ту же страницу в случае успеха, либо покажет заполненную форму при ошибке
Основная идея этого заключается в удобной обработке форм и разделении бизнес-логики / логики отображения при сохранении наиболее естественного макета сайта - отдельных файлов для разных модулей сайта, но общего дизайна.