Как сделать динамическую страницу php. Динамические страницы в PHP

Самый простой пример динамического сайта на PHP, это проще, чем кажется изначально.

Данный пример шаблона работает без баз данных MSQL, но это решается в процессе разработки, а на данном этапе все написано на HTML и PHP. В дальнейшем будет показан пример более сложного шаблона, а пока остановимся на простом, которого вполне достаточно, для создания отличного сайта.

Если вам нужно создать и раскрутить сайт под заказ, то следует обратиться в проверенную веб студию по раскрутке сайта .

Для начала, нужно узнать и понять различия динамики от простого html сайта, который описан в прошлом уроке и на основе которого будет построен данный проект. Так что желательно изучить , тогда очень легко будет разобраться в данной статье.

А отличие от простого сайта заключается именно в быстроте обслуживания! Кто уже знаком с простым HTML сайтом, тот знает, что для смены баннера, нужно перелопатить сайт полностью, каждую страницу… Что занимает очень много времени. А в динамическом — все можно сделать за несколько минут, не зависимо от того, сколько страниц у сайта, хоть 1000, на время редактирования это не влияет! Думаю даже этого достаточно, для того чтобы изучить данный пример!

Для примера будет взят шаблон сайта, написанный с применением тега

И так, посмотрите на пример страницы обычного шаблона, которую будем резать на отдельные файлы.


































— здесь будет разрез, а содержимое будет отдельным файлом —



Наполнение сайта





— все что ниже, также будет отдельным файлом —

















вставить красивое
меню для сайта






































Порезка HTML — шаблона на PHP блоки.

Первый файл будет содержать всю шапку сайта, аж до открытия блока

и будет называться header , и обязательно с расширением php !!!


































И название файла будет header.php


Второй файл будет основным, содержать все наполнение сайта — контент, который не будет меняться в будущем, или очень редко. Статья обычно размещается один раз, а изменения на одной странице, дело не хлопотное. К нему и будут подключаться остальные файлы, отвечающие за дизайн. И называться будет он будет например — title.php



Наполнение сайта



— здесь будет разрез, контент также будет отдельным файлом —



И название файла будет title.php


Все остальное — блок левого сайдбара и футер, формируем в третий файл — footer.php.




— все что ниже, также будет отдельным файлом —

















вставить красивое
меню для сайта






































и название файла будет footer.php


Теперь можно начать собирать наш сайт, как конструктор и понять все таинство создания динамического сайта. Для этого нужно к основному файлу подключить два файла, отвечающие за дизайн и содержащие левый сайдбар. Вот тут нам и нужны элементарные знания PHP, без чего ничего не получиться. И для этого нужно применить уже известную нам функцию require .




— подключение файла header.php



Наполнение сайта








— подключение файла footer.php


И вот наша страница собрана! А данный файл — title.php будет шаблоном,с которого формируются новые страницы.
И сотворим главную, название которой будет index.php . Для этого просто скопируем файл title.php и при сохранении его в той же папке, дадим название index.php. И по такому же принципу создаются все новые страницы. Отличным будет только наполнение, все остальное у них будет общим, и легко будет поддаваться мгновенным изменениям!!!

И не зависимо от того, какая программа открывает ваши php-файлы, у меня установлена прога PHP Expert Editor, через которую очень удобно перекодировать страницы, должно получиться так, как на изображении. Два файла обязательных и три страницы.

А дальше можно добавлять свои изменения, зависимо от того, что Вы хотите от Вашего сайта. Например, если ввести переменную, которая будет выводить заголовок для каждой страницы по отдельности,
тогда нужно добавить такой код в файл header.php




<?php echo «$title»; ?>


А в шаблон добавить код, который будет содержать в себе свое уникальное название страницы, что необходимо для правильного .






$title =’Пример динамического сайта на PHP. ‘;


require ‘header.php’;


?>



Наполнение сайта



Здесь можно писать что угодно и вставлять любую информацию,


предназначенную для посетителя.






Хочу обратить Ваше внимание на один очень важный момент. Это касается разработки сайта любой сложности — перед созданием нового проекта, очень внимательно и четко определитесь со всеми будущими функциями проекта. Например, если будет блог, тогда нужен блок коментариев, а для этого нужно ввести переменную, которая будет определять уникальный адрес страницы и т.д. Одним словом — общую нужно продумывать до … , потому что после — будет много недоработок, которые исправлять очень долго и мучительно, и этот совет относиться и к простым сайтам, и к сложным проектам, построенным на супер-новом движке!

Здравствуйте! Сейчас мы попробуем реализовать самую простую регистрацию на сайте с помощью PHP + MySQL. Для этого на вашем компьютере должен быть установлен Apache. Принцип работы нашего скрипта изображен ниже.

1. Начнем с создания таблички users в базе . Она будет содержать данные пользователя (логин и пароль). Зайдем в phpmyadmin (если вы создаете базу на своем ПК http://localhost/phpmyadmin/ ). Создаем таблицу users , в ней будет 3 поля.

Я создаю ее в базе mysql, вы можете создавать в другой базе. Далее устанавливаем значения, как на рисунке:

2. Необходимо соединение с этой таблицей. Давайте создадим файл bd.php . Его содержание:

$db = mysql_connect ("ваш MySQL сервер","логин к этому серверу","пароль к этому серверу");
mysql_select_db ("имя базы, к которой подключаемся",$db);
?>

В моем случае это выглядит так:

$db = mysql_connect ("localhost","user","1234");
mysql_select_db ("mysql",$db);
?>

Сохраняем bd.php .
Отлично! У нас есть таблица в базе, соединение к ней. Теперь можно приступать к созданию странички, на которой пользователи будут оставлять свои данные.

3. Создаем файл reg.php с содержанием (все комментарии внутри):



Регистрация


Регистрация
















4. Создаем файл , который будет заносить данные в базу и сохранять пользователя. save_user.php (комментарии внутри):



{
}
//если логин и пароль введены, то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести


//удаляем лишние пробелы
$login = trim($login);
$password = trim($password);
// подключаемся к базе
// проверка на существование пользователя с таким же логином
$result = mysql_query("SELECT id FROM users WHERE login="$login"",$db);
if (!empty($myrow["id"])) {
exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
}
// если такого нет, то сохраняем данные
$result2 = mysql_query ("INSERT INTO users (login,password) VALUES("$login","$password")");
// Проверяем, есть ли ошибки
if ($result2=="TRUE")
{
echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. Главная страница";
}
else {
echo "Ошибка! Вы не зарегистрированы.";
}
?>

5. Теперь наши пользователи могут регистрироваться! Далее необходимо сделать "дверь" для входа на сайт уже зарегистрированным пользователям. index.php (комментарии внутри) :

// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
session_start();
?>


Главная страница


Главная страница











Зарегистрироваться



// Проверяем, пусты ли переменные логина и id пользователя
if (empty($_SESSION["login"]) or empty($_SESSION["id"]))
{
// Если пусты, то мы не выводим ссылку
echo "Вы вошли на сайт, как гость
Эта ссылка доступна только зарегистрированным пользователям";
}
else
{

В файле index.php мы выведем ссылочку, которая будет открыта только для зарегистрированных пользователей. В этом и заключается вся суть скрипта - ограничить доступ к каким-либо данным.

6. Остался файл с проверкой введенного логина и пароля. testreg.php (комментарии внутри):

session_start();// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
if (isset($_POST["login"])) { $login = $_POST["login"]; if ($login == "") { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
if (isset($_POST["password"])) { $password=$_POST["password"]; if ($password =="") { unset($password);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
}
//если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
//удаляем лишние пробелы
$login = trim($login);
$password = trim($password);
// подключаемся к базе
include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь

$result = mysql_query("SELECT * FROM users WHERE login="$login"",$db); //извлекаем из базы все данные о пользователе с введенным логином
$myrow = mysql_fetch_array($result);
if (empty($myrow["password"]))
{
//если пользователя с введенным логином не существует
}
else {
//если существует, то сверяем пароли
if ($myrow["password"]==$password) {
//если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!
$_SESSION["login"]=$myrow["login"];
$_SESSION["id"]=$myrow["id"];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь
echo "Вы успешно вошли на сайт! Главная страница";
}
else {
//если пароли не сошлись

Exit ("Извините, введённый вами login или пароль неверный.");
}
}
?>

Ну вот и все! Может урок и скучный, но очень полезный. Здесь показана только идея регистрации, далее Вы можете усовершенствовать ее: добавить защиту, оформление, поля с данными, загрузку аватаров, выход из аккаунта (для этого просто уничтожить переменные из сессии функцией unset ) и так далее. Удачи!

Все проверил, работает исправно!

Многие читатели в любой книге о компьютерах пролистывают все, что не представляет непосредственного интереса, и переходят к тому, что они действительно хотят знать. Лично я поступаю именно так. Впрочем, в этом нет ничего страшного -- редко встречаются технические книги, которые необходимо читать от корки до корки. А может, вы именно так и поступили -- пропустили восемь начальных глав и взялись за эту главу, потому что у нее было самое интересное название? Да и кому захочется тратить время на подробности, когда на работе «горит» очередной проект?

К счастью, подобная торопливость не помешает вам нормально усвоить материал второй части книги, посвященной использованию PHP для построения сайтов и взаимодействия с Web. В этой главе вы научитесь легко модифицировать содержимое web-страниц и осуществлять навигацию в Web при помощи ссылок и различных стандартных функций. Следующая глава дополнит изложенный материал - в ней подробно рассматриваются средства взаимодействия с пользователем в формах HTML В главе 11 описана организация интерфейса с базами данных. В остальных главах второй части рассматриваются нетривиальные аспекты web-программирования на PHP.

Однако следует помнить о том, что материал части 1 абсолютно необходим для нормального владения PHP. Предполагается, что вы все же прочитали первую часть, поэтому в примерах будут использоваться многие из описанных ранее концепций. Итак, если вы пролистали часть книги, вам придется время от времени возвращаться к предыдущим главам и наверстывать упущенное.

Простые ссылки

<а href = "date.php">

$link = "date.php";

print "<а href = \"$link\">View today"s date
\n"

Вероятно, у вас возник вопрос -- почему в коде ссылки перед кавычками (") ставится обратная косая черта (\)? Дело в том, что кавычки в PHP являются специальными символами и используются в качестве ограничителей строк. Следовательно, кавычки-литералы в строках должны экранироваться.

Если необходимость экранировать кавычки вас раздражает, просто включите режим magic_quotes_gpc в файле php.ini. В результате все апострофы, кавычки, обратные косые черты и нуль-символы. в тексте автоматически экранируются!

Разовьем приведенный пример. Для быстрого вывода списка ссылок в браузере можно воспользоваться массивом:

// Создать массив разделов

$contents - array("tutorials", "articles", "scripts", "contact");

// Перебрать и последовательно вывести каждый элемент массива

for ($i = 0; $i < sizeof($contents; $i++)

print " • ".$contents[$i]."
\n";

// • - специальное обозначение точки-маркера endfor;

Файловые компоненты (шаблоны)

Мы подошли к одной из моих любимых возможностей PHP. Шаблоном (применительно к web-программированию) называется часть web-документа, которую вы собираетесь использовать в нескольких страницах. Шаблоны, как и функции PHP, избавляют вас от лишнего копирования/вставки фрагментов содержания страницы и программного кода. С увеличением масштабов сайта значение шаблонов возрастает, поскольку они позволяют легко и быстро проводить модификации на уровне целого сайта. В этом разделе будут описаны некоторые возможности, которые открываются при использовании простейших шаблонов.

Как правило, общие фрагменты содержания/кода (то есть шаблоны) сохраняются в отдельных файлах. При построении web-документа вы просто «включаете» эти файлы в соответствующие места страницы. В PHP для этого существуют две функции: include() и require().

include() и require()

Одним из самых выдающихся аспектов PHP является возможность построения шаблонов и программных библиотек и их последующей вставки в новые сценарии. Применение библиотек экономит время и усилия по использованию общих функциональных возможностей на разных web-сайтах. Читатели, обладающие

опытом программирования на других языках (например, С, C++ или Java), хорошо знакомы с концепцией библиотек функций и их использованием в программах для расширения функциональных возможностей.

Включение одного или нескольких файлов в сценарий осуществляется стандартными функциями PHP require() и include(). Как будет показано в следующем разделе, каждая из этих функций применяется в определенной ситуации.

Функции

В PHP существуют четыре функции для включения файлов в сценарии PHP:

  • include();
  • include_once();
  • require();
  • require_once().

Несмотря на сходство имен, эти функции решают разные задачи.

Функция include() включает содержимое файла в сценарий. Синтаксис функции include():

include (file файл]

У функции include() есть одна интересная особенность -- ее можно выполнять условно. Например, если вызов функции включен в блок команды if. то файл включается в программу лишь в том случае, если условие i f истинно. Если функция includeO используется в условной команде, то она должна быть заключена в фигурные скобки или в альтернативные ограничители. Сравните различия в синтаксисе листингов 9.1 и 9.2.

Листинг 9.1. Неправильное использование include()

if (some_conditional)

include ("text91a.txt"); else

include ("text91b.txt");

Листинг 9.2. Правильное использование include()

if (some_conditional) :

include ("text91a.txt");

include ("text91b.txt");

Весь код PHP во включаемом файле обязательно заключается в теги PHP. Не стоит полагать, что простое сохранение команды PHP в файле обеспечит ее правильную обработку:

Вместо этого необходимо заключить команду в соответствующие теги, как показывает следующий пример:

print "this is an invalid include file";

Функция include_once() делает то же, что и include(), за одним исключением: прежде чем включать файл в программу, она проверяет, не был ли он включен ранее. Если файл уже был включен, вызов include_once() игнорируется, а если нет -- происходит стандартное включение файла. Во всем остальном include_once() ничем не отличается от include(). Синтаксис функции include_once():

include_once (file файл)

В целом функция require() похожа на include() -- она тоже включает шаблон в тот файл, в котором находится вызов require(). Синтаксис функции require():

require (file файл)

Тем не менее, между функциями require() и include() существует одно важное различие. Файл, определяемый параметром require(), включается в сценарий независимо от местонахождения require() в сценарии. Например, при вызове requi ге() в блоке if при ложном условии файл все равно будет включен в сценарий!

Во многих ситуациях бывает удобно создать файл с переменными и другой информацией, которая используется в масштабах сайта, и затем подключать его по мере необходимости. Хотя имя этого файла выбирается произвольно, я обычно называю его init.tpl (сокращение от «initializaion.template»). В листинге 9.3 показано, как выглядит очень простой файл init.tpl. В листинге 9.4 содержимое init.tpl включается в сценарий командой require().

Листинг 9.3. Пример инициализационного файла

$site_title = "PHP Recipes";

$contact_email = "[email protected]";

$contact_name = "WJ Gilmore";

Листинг 9.4. Использование файла init.tpl

<? print $site_title; ?>

\"mai1 to:$contact_email\">$contact_name."; ?>

Передача URL при вызове require() допускается лишь при включенном режиме «URL fopen wrappers» (этот режим включен по умолчанию).

С увеличением размеров сайта может оказаться, что некоторые файлы включаются в сценарий по несколько раз. Иногда это не вызывает проблем, но в некоторых случаях повторное включение файла приводит к сбросу значений изменившихся переменных. Если во включаемом файле определяются функции, могут возникнуть конфликты имен. Учитывая сказанное, мы приходим к следующей функции -- require_once().

Функция require_once() гарантирует, что файл будет включаться в сценарий всего один раз. После вызова requi rе_оnсе() все дальнейшие попытки включения того же файла игнорируются. Синтаксис функции requiге_оnсе():

Вероятно, вы станете чаще использовать функции включения файлов по мере того, как ваши web-приложения начнут увеличиваться в размерах. Эти функции часто встречаются в примерах данной книги, чтобы сократить избыточность программного кода. Первые примеры рассматриваются в следующем разделе, посвященном принципам построения базовых шаблонов.

Построение компонентов

При определении структуры типичной web-страницы я обычно разбиваю ее на три части: заголовок, основную часть и колонтитул. Как правило, в большинстве правильно организованных web-сайтов присутствует заголовок, который практически не изменяется; в основной части выводится запрашиваемое содержание сайта, поэтому она часто изменяется; наконец, колонтитул содержит информацию об авторских правах и навигационные ссылки. Колонтитул, как и заголовок, обычно остается неизменным. Не поймите меня превратно -- я вовсе не пытаюсь подавлять ваши творческие устремления. Мне встречалось немало великолепных сайтов, не следовавших этим принципам. Я всего лишь пытаюсь выработать общую структуру, которая может послужить отправной точкой для дальнейшей работы.

Заголовок

Заголовочный файл (вроде приведенного в листинге 9.5) присутствует практически в каждом из моих web-сайтов с поддержкой PHP. В этом файле содержится

информация, действующая на уровне всего сайта, -- например, заголовок, контактные данные и некоторые компоненты кода HTML-страницы.

Листинг 9.5. Пример файла заголовка

// Файл: header.tpl

// Назначение: заголовочный файл для сайта PhpRecipes .

$site_name = "PHPRecipes";

$site_email= "[email protected]";

$site_path = "http://localhost/phprecipes";

<? print $site_name; ?>

// Вывести текущую дату и время

print date ("F d, h:i a");

Довольно часто доступ к включаемым файлам со стороны посетителей ограничивается, особенно если эти файлы содержат конфиденциальную информацию (например, пароли). В Apache можно запретить просмотр некоторых файлов редактированием файлов http.conf или htaccess. Следующий пример показывает, как запретить просмотр всех файлов с расширением.tpl:

Order allow,deny

Allow from 127.0.0.1

PHP и проблемы безопасности сайтов подробно описаны в главе 16.

Колонтитул

Колонтитулом (footer) обычно называется информация, расположенная в нижней части страниц сайта, -- контактные данные, ссылки и информация об авторских правах. Эту информацию можно разместить в отдельном файле и включать в качестве шаблона так же, как это делается с заголовком. Допустим, c наступлением нового года вам потребовалось изменить информацию об авторских правах и привести ее к виду «Copyright © 2000-2001». Есть два пути: потратить канун Рождества на лихорадочное редактирование сотен статических страниц или воспользоваться шаблоном наподобие приведенного в листинге 9.6. Одно простое изменение -- и вы можете возвращаться к праздничным хлопотам.

Листинг 9.6. Пример файла колонтитула (footer.tpl)

contact |

your privacy

Обратите внимание на использование глобальной переменной $site_email в файле колонтитула. Значение этой переменной действует в масштабах всей страницы, а мы предполагаем, что файлы header.tpl и footer.tpl будут включены в одну итоговую страницу. Также обратите внимание на присутствие пути $site_path в ссылке Privacy (Конфиденциальность). Я всегда включаю в шаблоны полные пути ко всем ссылкам -- если бы URL ссылки состоял из одного имени privacy.php, то файл колонтитула был бы жестко привязан к конкретному каталогу.

Основная часть

В основной части страницы подключается содержимое заголовка и колонтитула. В сущности, именно основная часть содержит информацию, интересующую посетителей сайта. Заголовок эффектно выглядит, колонтитул содержит полезные сведения, но именно ради основной части страницы пользователи снова и снова возвращаются на сайт. Хотя я не смогу предоставить каких-либо рекомендаций по поводу конкретной структуры страниц, шаблоны, подобные приведенному в листинге 9.7, основательно упрощают администрирование страниц.

Листинг 9.7. Пример основной части страницы (index_body.tpl)

/tutorials.php">tutorials

articles

scripts

contact

Welcome to PHPRecipes. the starting place for PHP scripts, tutorials,

and information about gourmet cooking!

Все вместе: заголовок, колонтитул и основная часть

Вероятно, мое настроение лучше всего выражается фразой полковника «Ганнибала» Смита (Джордж Пеппард) из знаменитого сериала «Команда А»: «Люблю, когда все становится на свои места». Я испытываю нечто подобное, когда разрозненные шаблоны объединяются и образуют полный web-документ. Комбинируя три секции документа: header.tpl, index_body.tpl и footer.tpl, -- можно быстро построить простейшую страницу вроде той, что приведена в листинге 9.8.

Листинг 9.8. Построение страницы index.php включением нескольких файлов

// Файл: index.php

// Назначение: домашняястраница PHPRecipes

// Вывести заголовок

include ("header.tpl");

// Вывести основную часть

include ("index_body.tpl");

// Вывести колонтитул

include ("footer.tpl");

Ну как? Три простые команды -- и перед вами готовая страница. Текст итоговой страницы приведен в листинге 9.9.

Листинг 9.9. Страница HTML, построенная в листинге 9.8 (index.php)

PHPRecipes

August 23, 03:17 pm

tutorials

articles

scripts

contact

Welcome to PHPRecipes, the starting place for PHP scripts, tutorials,

and gourmet cooking tips and recipes!

Copyright 2000 PHPRecipes. All rights reserved.

contact |

your privacy

На рис. 9.1 показано, как полученная страница выглядит в браузере. Хотя я обычно не пользуюсь рамками таблиц, на этот раз я их вывел, чтобы на рисунке более наглядно выделялись три части страницы.

Рис. 9.1. Внешний вид страницы, построенной в листинге 9.8

Оптимизация шаблонов

Во втором (на мой взгляд, более предпочтительном) варианте шаблоны оформляются в виде функций, находящихся в отдельном файле. Тем самым обеспечивается дополнительное структурирование ваших шаблонов. Я называю этот файл инициализационным файлом и храню в нем другую полезную информацию. Поскольку мы уже рассмотрели относительно длинные примеры заголовка и колонтитула, содержимое листингов 9.10 и 9.11 было слегка сокращено для наглядной демонстрации новой идеи.

Листинг 9.10. Оптимизированный шаблон сайта (site_init.tpl)

// Файл: site_init.tpl

// Назначение: инициализационный файл PhpRecipes

$site_name = "PHPRecipes";

$site_email = "[email protected]";

$site_path = "http://localhost/phprecipes/";

function show_header($site_name) {

<? print $site_name: ?>

This is the header

function show footer ()

This Is the footer

Листинг 9.11. Применение инициализационного файла

// Включить инициализационный файл

include("site_init.tpl");

// Вывести заголовок

show header ($site_name);

// Содержимое основной части This is some body information

// Вывести колонтитул Show_footer();

Проект: генератор страниц

Хотя в большинстве созданных мною web-сайтов основное содержимое страниц формировалось на основании информации, прочитанной из базы данных, всегда найдется несколько страниц, которые практически не изменяются. В частности, на них могут выводиться сведения о команде разработчиков, контактные данные, реклама и т. д. Я обычно храню эту «статическую» информацию в отдельной папке и использую сценарий PHP для ее загрузки при поступлении запроса. Конечно, у вас возникает вопрос -- если это статическая информация, для чего нужен сценарий PHP? Почему бы не загружать обычные страницы HTML? Преимущество PHP заключается в том, что вы можете использовать шаблоны и вставлять статические фрагменты по мере необходимости.

<а href = "/static.php?content=$content">Static Page Name

Начнем с создания статических страниц. Для простоты я ограничусь тремя страницами, содержащими информацию о сайте (листинг 9.12), рекламу (листинг 9.13) и контактные данные (листинг 9.14).

Листинг 9.12. Информация о сайте (about.html)

About PHPRecipes

What programmer doesn"t mix all night programming with gourmet cookies. Here at PHPRecipes. hardly a night goes by without one of our coders mixing a little bit of HTML with a tasty plate of Portobello Mushrooms or even Fondue. So we decided to bring you the best of what we love most: PHP and food!

That"s right, readers. Tutorials, scripts, souffles and more. 0nly at PHPRecipes.

Advertising Information

Regardless of whether they come to learn the latest PHP techniques or for brushing up on how

to bake chicken, you can bet our readers are decision makers. They are the Industry

professionals who make decisions about what their company purchases.

For advertising information, contact

">[email protected].

Листинг 9.14. Контактные данные (contact.html)

Contact Us

Have a coding tip?

Know the perfect topping for candied yams?

Let us know! Contact the team at [email protected].

Переходим к построению страницы static.php, которая выводит запрашиваемую статическую информацию. В этот файл (см. листинг 9.15) включаются компоненты страниц нашего сайта и инициализационный файл site_init.tpl.

Листинг 9.15. Общий вывод статических страниц (static.php)

// Файл: static.php

// Назначение: отображение запрашиваемых статических страниц.

// ВНИМАНИЕ: предполагается, что файл "site_init.tpl" и все

// статические файлы находятся в том же каталоге.

// Загрузить функции и переменные include("site_init.tpl"):

// Вывести заголовок show_header($site_name);

// Вывести запрашиваемое содержание include("$content.html"):

// Вывести колонтитул show footer();

Теперь все готово к построению основного сценария. Просто включите в страницу

<а href = "static.php?content=about">Static Page Name

Advertising Information

Contact Us

Если щелкнуть на любой из этих ссылок, в браузере загружается соответствующая статическая страница, внедренная в static.php!

Итоги

В этой главе вы познакомились с первоочередной задачей, для решения которой и создавался PHP, -- динамическим построением web-страниц. Были рассмотрены следующие вопросы:

  • обработка URL;
  • построение динамического содержания;
  • включение и построение базовых шаблонов.

Глава завершается генератором страниц -- программой, которая загружает статические страницы в шаблон и позволяет легко организовать поддержку большого количества статических страниц HTML.

Следующая глава посвящена использованию PHP в сочетании с формами HTML, заметно повышающими степень интерактивности вашего сайта. А потом -- взаимодействие с базами данных! Вам предстоит узнать много интересного.

Для решения третьей проблемы хорошо подойдет программа Denwer, которую можно бесплатно установить на Ваш компьютер. Если Вы не в курсе, что это за программа, то советую ознакомиться: как установить Denwer , в этой статье пошагово (для новичков) объяснено как его установить и как пользоваться.

Конечно, есть и другие средства, которые позволяют интерпретировать PHP. Например, Apatch, но он довольно сложен в настройках, а если вы новичок, то начинать с него не советую.

Для того, чтобы приступать к разработке сайта на PHP, Вам нужны начальные знания в HTML. Я уже писал о том, как создать простую страницу HTML . Там описаны все html-теги, без которых создать сайт невозможно. Поэтому настоятельно рекомендую начать изучать сайтостроение с той статьи.

Чем отличается сайт на PHP от голого сайта на HTML?

Сайт на PHP почти ничем не отличается от голого сайта на HTML. Единственное отличие - более гибкая настройка и управление сайта, а также есть возможность автоматизировать множество функций. Приведу простой пример.

Допустим в шапке сайта необходимо изменить буквально одно слово. Если сайт сделан на голом HTML, то необходимо будет открыть каждый html-файл, чтобы внести изменение, а это очень неудобно. Если же шапка сайта сделана на PHP в качестве подключаемого компонента, то изменения нужно будет внести только в одном файле и они автоматом изменятся на всем сайте.

Структура типичного сайта на PHP:

Теперь приведу код шаблона сайта на PHP. Обратите внимание на то, что страницы сделанные с использованием php рекомендуется делать с расширением .php , хотя это не является обязательным условием. При определенных настройках хостинга файлы с обычным расширением .html также могут обрабатывать PHP-код.

Код файла index.php :

<span>Название страницы </span> ... $_SERVER["DOCUMENT_ROOT"]."/head.php" ; ?> ... ...
$_SERVER["DOCUMENT_ROOT"]."/top.php" ; ?>
...
...
... Основная часть сайта...
... ... ...

Теперь отдельно рассмотрим каждый из подключаемых элементов:

  • head.php
  • top.php
  • sidebar1.php
  • sidebar2.php
  • footer.php

Обратите внимание, что подключается они через специальную команду PHP:

require_once <полный путь/имя файла>

Каждый файл соответственно отвечает за отдельную часть сайта. Я постарался назвать их максимально информативно и понятно. Сайт может состоять из большего множество таких подключаемых файлов. Рассмотрим по порядку каждый элемент сверху вниз.

Мы говорили только о статических страницах, то есть таких, которые, как бы пользователь с ними не взаимодействовал, всегда остаются неизменными, а чтобы содержимое или оформление их поменялось, хозяину страницы надо править код вручную.

Динамические страницы и что для них нужно

Помимо статических есть ещё динамические страницы. Таких сейчас в Интернете большинство. Информация в них подгружается из внешних источников, например базы данных или других файлов. Содержимое и форматирование таких страниц может меняться в зависимости от действий пользователя. Для правки динамических сайтов не обязательно вмешиваться в их код – достаточно изменить контент в специально для него предназначенном файле или базе данных, которая, к слову, представляет собой тоже файл, только определённым образом структурированный.

Для создания динамических сайтов только HTML и CSS недостаточно. Тут используются ещё и языки программирования, а также базы данных и языки запросов к ним. Чаще всего современные динамические сайты используют в своей работе HTML, CSS, PHP, JavaScript, SQL. Первые две аббревиатуры вам уже знакомы не понаслышке, SQL применяется для доступа к базам данных, JavaScript - клиентский язык, команды которого обрабатываются браузером и зачастую используются, чтобы показывать вам всякую красоту вроде шторок или плавно открывающихся фотографий, а вот PHP - это серверный язык программирования, который работает, в том числе, с содержимым сайта и делает его динамическим, с ним мы сегодня и соприкоснёмся.

Пример использования команды include

В предыдущей статье я рассказывал о блочной вёрстке сайта и приводил в пример простейшую страницу (документ index.html и привязанный к нему файл style.css ).

Сейчас мы разделим документ index.html на несколько файлов, каждый из которых будет содержать свою часть страницы, что поможет ещё сильней разделить код, улучшить структуру шаблона и, по сути, сделать страницу динамической. Для этой цели мы будем использовать язык PHP, а точнее лишь одну его директиву - функцию include() , которая включает один файл в другой.

1. Смените разрешение созданного в статье о блочной вёрстке файла index с .html на .php , чтобы документ назывался index.php . Тип файла .PHP указывает серверу, что документ был написан или использует вставки на одноимённом языке программирования.

2. В папке со страницей создайте директорию blocks .

3. Всю вспомогательную информацию (верх, низ, навигацию и боковую панель сайта) вынесем в отдельные файлы, которые разместим в папке blocks .

Итак, создайте в каталоге blocks четыре файла: header.php , navigation.php , sidebar.php и footer.php . Заполните файлы кодом.

4. Проверьте структуру папки шаблона. В корне должны находиться файлы index.php , style.css и директория blocks .

Структура папки blocks должна быть такой.

5. В файле index.php удалите существующий код и напишите новый:

Блочная вёрстка

Основной контент страницы

В браузере файл index.php выглядит точно так же, как и раньше, но структура шаблона при этом полностью изменилась. О том, что получилось, поговорим потом, а сейчас ответим на вопрос о загадочных командах вида .

Как и HTML-код, код PHP тоже имеет своё обозначение начала и конца. Так вот начинать PHP-вставку нужно командой , а заканчивать строкой ?> . Между этими командами пишется основной код. В нашем случае это всего лишь одна команда - include .

Функция include() вставляет в файл код из другого файла, давая возможность хранить разные части страницы в разных документах, тем самым надёжно отделяя их друг от друга.

В результате выполненных действий мы получили динамическую страницу index.php , части которой подгружаются из разных файлов. Благодаря этому можно создавать другие страницы, точно так же подгружая в них вспомогательные элементы из файлов папки blocks .

Такой подход хорош тем, что если вы захотите на сайте в 20-30 страниц изменить, скажем, название пункта меню, то в шаблоне с только что созданной структурой понадобится внести правки только в один файл - blocks/navigation.php, и меню изменится сразу на всех страницах, в которые он включен. Если же сайт был бы статическим, то для смены названия одного пункта меню вам пришлось бы вносить изменения в каждую из 20-30 страниц. Разница очевидна.