В этом разделе сайта будут рассмотрены основные принципы и примеры создания серверных сценариев на языке РНР для решения типичных задач разработки веб-сайтов.
Здесь мы рассмотрим каким образом можно модифицировать содержимое веб-страниц и осуществлять навигацию при помощи ссылок и различных стандартных функций.
По ссылкам пользователь может переходить как на обычные страницы 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");
?>
В окне веб-браузера это будет выглядеть ТАК.