

В этом разделе сайта будут рассмотрены основные принципы и примеры создания серверных сценариев на языке РНР для решения типичных задач разработки веб-сайтов.
Здесь мы рассмотрим каким образом можно модифицировать содержимое веб-страниц и осуществлять навигацию при помощи ссылок и различных стандартных функций.
По ссылкам пользователь может переходить как на обычные страницы HTML, так и на страницы, содержащие код РНР.
Пример:
<a href="168.php" target="_blank">Дата и время</a>
Если щелкнуть на ссылке, в браузере будет загружена страница с именем 168.php. Просто, не правда ли? Развивая приведенный пример, можно воспользоваться переменной для построения динамической ссылки:
<?php
        $link="168.php";
        echo "<a href='$link'>Дата и время</a>";
        ?>
В окне веб-браузера это будет выглядеть ТАК.
Для быстрого вывода списка ссылок в браузере можно воспользоваться массивом:
<?php
        // Создать массив разделов
        $cont=array("phpstage", "phpstage1", "phpstage2", "phpstage3");
        
        // Перебрать и последовательно вывести каждый элемент массива
        for($i=0; $i<count($cont); $i++)
        print " <a href = '$cont[$i] .html'>$cont[$i]</a><br>\n";
        ?>
В окне веб-браузера это будет выглядеть ТАК.
Шаблоном (применительно к веб-программированию) называется часть веб-документа, которую вы собираетесь использовать в нескольких страницах. Шаблоны, как и функции РНР, избавляют вас от лишнего копирования/вставки фрагментов содержания страницы и программного кода. С увеличением масштабов сайта значение шаблонов возрастает, поскольку они позволяют легко и быстро проводить модификации на уровне целого сайта. В этом разделе будут описаны некоторые возможности, которые открываются при использовании простейших шаблонов.
Как правило, общие фрагменты содержания/кода (то есть шаблоны) сохраняются в отдельных файлах. При построении веб-документа вы просто «включаете» эти файлы в соответствующие места страницы.
Включение одного или нескольких файлов в сценарий осуществляется стандартными функциями РНР require() и include().
Функции для включения файлов в сценарии РНР:
include(имя_файла) — включает содержимое файла в сценарий.
У функции include() есть одна интересная особенность — ее можно выполнять условно. Например, если вызов функции включен в блок команды if то файл включается в программу лишь в том случае, если условие if истинно. Если функция include() используется в условной команде, то она должна быть заключена в фигурные скобки или в альтернативные ограничители.
Пример:
<?php
            if (some_conditional) {
include ("1.php");
            }
            else {
include ("1.php");
            }
            ?>
В окне веб-браузера это будет выглядеть ТАК.
require (имя_файла) — похожа на include() — она тоже включает шаблон в тот файл, в котором находится вызов require().
          Тем не менее, между функциями require() и include() существует одно важное различие. Файл, определяемый параметром require(), включается в сценарий независимо от местонахождения require( ) в сценарии. Например, при вызове requiге() в блоке if при ложном условии файл все равно будет включен в сценарий!
Во многих ситуациях бывает удобно создать файл с переменными и другой информацией, которая используется в масштабах сайта, и затем подключать его по мере необходимости. Имя этого файла выбирается произвольно. Назовем его 227.php.
Пример:
<?php
            $site_title = "Основы РНР";
$contact_email = "[email protected]";
$contact_name = "Sevidi";
?>
Пример использования файла 227.php:
<?php require ('227.php ');?>
<html>
            <head>
            <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
            <title><? print $site_title; ?></title>
            </head>
<body>
            <? print "Добро пожаловать на сайт. Контакты: <a href = mailto:$contact_email; > $contact_name</a>.";
            ?>
</body>
            </html>
С увеличением размеров сайта может оказаться, что некоторые файлы включаются в сценарий по несколько раз. Иногда это не вызывает проблем, но в некоторых случаях повторное включение файла приводит к сбросу значений изменившихся переменных. Если во включаемом файле определяются функции, могут возникнуть конфликты имен. Учитывая сказанное, мы приходим к следующей функции — require_once().
require_once(имя_сайта) — гарантирует, что файл будет включаться в сценарий всего один раз. После вызова requirе_оnсе() все дальнейшие попытки включения того же файла игнорируются. Если не считать дополнительной проверки, в остальном эта функция аналогична require().
Как правило, в большинстве правильно организованных веб-сайтов присутствует заголовок, который практически не изменяется; в основной части выводится запрашиваемое содержание сайта, поэтому она часто изменяется; наконец, колонтитул содержит информацию об авторских правах и навигационные ссылки. Колонтитул, как и заголовок, обычно остается неизменным.
Создадим файл-заголовок.
Пример файла заголовка 228.php:
<?
        // Файл: 228.php
        // Назначение: заголовочный файл для сайта.
        // Дата: 28 января 2009 г.
        $site_name = "Основы РНР";
        $site_title = "Динамическое создание страниц";
        $site_email= "[email protected]";
        $site_path = "http://localhost/phpstage24";
        ?>
        <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
        <title><? print $site_title; ?></title>
        <style type="text/css">
        <!--
        .стиль1 {
        font-family: "Times New Roman", Times, serif;
        color: #CC0000;
        }
        -->
        </style>
        </head>
        <body>
        <table width="950" border="1" cellpadding="5" align="center">
        <tr>
        <td valign="top">
        <h1 align="center" class="стиль1"><?php print $site_name?></h1></td>
        </tr>
        <tr>
        <td valign="top">
        <?php 
 // Вывести текущую дату и время
        print date ("F d, h:i a");
 ?>
        </td>
        </tr>
        </table>
В окне веб-браузера это будет выглядеть ТАК.
А теперь создадим файл-колонтитул. Колонтитулом обычно называется информация, расположенная в нижней части страниц сайта, — контактные данные, ссылки и информация об авторских правах. Эту информацию можно разместить в отдельном файле и включать в качестве шаблона так же, как это делается с заголовком. Допустим, c наступлением нового года вам потребовалось изменить информацию об авторских правах и привести ее к виду «Copyright © 2000-2001».
Пример создания файла-колонтитула 230.php:
<style type="text/css">
        <!--
        .стиль2 {color: #0000FF}
        -->
        </style>
        <table width="950" border="1" cellpadding="5">
        <tr>
        <td valign="top" align="left"><span class="стиль2">© Смирнов В.И.  2008-2009</span>| <a href = "mailto:<?=$site_email;?>" target="_blank">Контакты </a>|<a href =
        "<?=$site_path;?>/phpstage24.html" target="_blank">Основы РНР</a></td>
        </tr>
        </table>
</body>
        </html>
Создаем основную часть файла. К основной части страницы подключается содержимое заголовка и колонтитула. В сущности, именно основная часть содержит информацию, интересующую посетителей сайта. Заголовок эффектно выглядит, колонтитул содержит полезные сведения, но именно ради основной части страницы пользователи снова и снова возвращаются на сайт.
Пример создания основной части страницы 231.php:
<table width="950" border="1" cellpadding="5">
        <tr>
        <td valign="top">
        <a href = "<?=$site_path;?>/phpstage2.html">Основы РНР</a> <br>
        <a href = "<?=$site_path;?>/phpstage3.html">Пример PHP-программы</a> <br>
        <a href = "<?=$site_path;?>/phpstage4.html">Типы данных</a> <br>
        <a href = "<?=$site_path;?>/phpstage5.html">Переменные, константы,
        выражения</a> <br>
        <a href = "<?=$site_path;?>/phpstage6.html">Ссылочные переменные</a> <br>
        <a href = "<?=$site_path;?>/phpstage7.html">Выражения</a> <br>
        </td>
        </tr>
        </table>
А теперь соединим все вместе в файл 232.php.
<?php
        // Файл: 232.php
// Назначение: домашняя страница
// Дата: 28 января 2009 г.
// Вывести заголовок
include ("228.php");
// Вывести основную часть
include ("231.php");
// Вывести колонтитул
include ("230.php");
?>
В окне веб-браузера это будет выглядеть ТАК.
