Страница, показанная в листинге 26.3, представляет собой простейшую форму ввода. Каждый тег ввода после щелчка на кнопке ввода (submit) преобразуется в массив _REQUEST, и вызывается сценарий, приведенный в листинге 26.4. Этот сценарий открывает файл requests.txt для добавления и записывает в него все поля. Поля разделяются символами табуляции, что упрощает последующий ввод данных файла в электронную таблицу.
Листинг 26.4. Вывод формы

<html> <head>
^^^^Листинг 26.4</title>
</head>
<body>
<?
/*
** обработка ввода из формы и добавление его в файл */
$fp = fopen("/tmp/requests.txt", "a");
if($fp)
{
//ввод пользователя
$_REQUEST['name'] = substr(0, 16, $_REQUEST['name']); $_REQUEST['address'] = substr(0, 32, $_REQUEST['address']); $_REQUEST['city'] = substr(0, 16, $_REQUEST['city']); $_REQUEST['state'] = substr(0, 2, $_REQUEST['state']); $_REQUEST['zip'] = substr(0, 10, $_REQUEST['zip']); //заблокировать файл flock($fp, (LOCK_SH)); //записать запрос
fputs($fp, $_REQUEST['name'] . "t" . $_REQUEST['address'] . "t" . $_REQUEST['city'] . "t" . $_REQUEST['state'] . "t" . $_REQUEST['zip'] . "n"); //release lock 
flock($fp, LOCK_UN); //close the file fclose($fp);
}
<p>
Спасибо за запрос каталога! </p>
<p>
<a href="2 6-3.html">Возвратиться на страницу</a>
</p>
</body>
</html>
26.2. Использование PHP-кода для вывода всего HTML-кода
Любой пример из предыдущего раздела можно считать отличным первым шагом интеграции PHP-кода в Web-узел. Его вклад в нагрузку на сервер очень незначителен. Web-узлы, использующие подобную методику, можно классифицировать как Web-узлы с возможностями PHP. Небольшое добавление PHP-кода позволяет выделить их в отдельную категорию. Дальнейшим шагом будет усиление PHP-кода: Web-узел, полностью созданный с использованием PHP-кода. При таком подходе каждый выводимый байт создается с помощью PHP. Функция print отсылает HTML-теги. Страницы являются сценариями, заключенными между парой PHP-тегов.
Вероятно, вы уже обратили внимание, что в большинстве примеров, приведенных в этой книге, используется именно такой подход. Я обнаружил, что, несмотря на то что при таком подходе требуется больше времени, таким кодом лучше управлять. Поскольку информация помещается в PHP-переменные, позднее будет просто добавить к ней что-то динамически. Это также улучшает читаемость, несмотря на усложнение страниц. Сравните простой пример, приведенный в листинге 26.5, с примером из листинга 26.6. Но при этом цвет фона меняется в зависимости от времени суток.

| Листинг 26.5. Смешение PHP- и HTML-кода_
<html> <head>
^^^^Листинг 26.5</title>
</head>
<?php
$Hour = date("H");
$Intensity = round(($Hour/24.0)*(0xFF)); $PageColor = dechex($Intensity) .
dechex($Intensity) .
dechex($Intensity);
?>
<body bgcolor="#<?php print($PageColor); ?>">
<111>Листинг 26.5</h1>
</body>
</html> 
I Листинг 26.6. Преобразование сценария в PHP-код
<?php
//начало документа print("<html>n"); print("<head>n");
print("<title> Листинг 26.6</title>n"); print("</head>n");
$Hour = date("H");
$Intensity = round(($Hour/24.0)*(0xFF)); $PageColor = dechex($Intensity) .
dechex($Intensity) .
dechex($Intensity); // отобразить тело
print("<body bgcolor="#$PageColor">n"); print("<h1>Листинг 26.6</h1>n"); print("</body>n");
print("</html>n");

Мой опыт свидетельствует о том, что хранение HTML-кода в сценарии PHP позволяет очень легко и быстро вносить изменения. Не нужно искать открывающие и закрывающие теги в HTML-коде, как в листинге 26.5, что позволяет разбить код на отдельные строки, которые в выводимых на экран браузера строках будут объединены (в качестве примера можно привести текст заголовка). При этом можно улучшить читаемость кода не в ущерб представлению. Таким образом, упрощается работа с таблицами. Наличие пробела между тегом td и изображением приводит к появлению дополнительного пикселя. Для HTML-кода решение заключается в переделке всей строки. В сценарии PHP можно иметь множество вызовов print и отправить завершение строки только в конце. В результате получим одну строку вывода при читаемом исходном коде.
Польза этого метода возрастает по мере увеличения объема проекта. Я создал 50-страничные приложения с использованием обоих подходов и могу ручаться за ценность метода помещения всего HTML-кода в PHP-коде.