Пример приложения PHP

Перед тем, как приступить к изучению языка PHP необходимо к этому подготовить свой рабочий компьютер, а именно, установить на нем локальный сервер с установленным на нем PHP. Без этого вы не сможете проверить работу прописанных в этих уроках php-скриптов и проводить над ними различные эксперименты. Как установить локальный сервер на свой компьютер можно узнать здесь.

Одним из наиболее распространенных применений любого языка написания серверных сценариев считается обработка HTML-форм.

Форма заказа

Программист компании “Автозапчасти от Вована”, работающий на языке HTML, разработал форму для заказа продаваемых Вованом запчастей. Эта сравнительно простая форма, показанная на рис. 1.1, аналогична множеству других форм, которые можно встретить в интернете практически повсеместно. Вован хотел бы иметь возможность знать, что именно заказал его клиент, какова общая сумма заказа, и какую сумму налога с продаж ему придется уплатить по этому заказу.

Форма заказа товара

Файл orderform.php с html-кодом этой формы мы видим в листинге 1.1:

Форма заказа товара

Следует отметить, что действию (action) формы присвоено имя РНР-файла, который будет обрабатывать заказ клиента. (Написанием этого сценария мы займемся в дальнейшем.) В общем случае значением атрибута action является URL-адрес, который будет загружаться после щелчка пользователем на кнопке Submit (Отправить). Данные, введенные пользователем в форму, отправляются по этому URL-адресу с помощью метода, указанного в атрибуте method: это либо GET (данные добавляются в конец URL-адреса), либо POST (данные отправляются в виде отдельного сообщения).

Также обратите внимание на имена полей формы — tireqty (количество покрышек), oilqty (количество емкостей масла) и sparkqty (количество свечей зажигания). Эти названия далее будут использованы в PHP-сценарии. Лучше присваивать имена, имеющие какой то смысл и легко запоминались. Придерживайтесь определенного стандарта при именовании полей, чтобы все имена полей в пределах сайта имели одинаковый формат.

Обработка формы

Для обработки формы необходимо создать сценарий, прописанный в атрибуте action дескриптора form, и дать ему имя processorder.php. Создайте текстовым редактором файл с таким именем и пропишите в нем ниже приведенный код:

<html>

<head>

<title>Aвтозапчасти от Вована — результаты зaкaзa</title>

</head>

<body>

<h1>Автозапчасти от Вована</h1>

<h2>Результаты заказа</h2>

</body>

</html>

Как видим, все прописанное нами в файле представляет собой обычный HTML-текст. Осталось добавить немного простого РНР-кода.

Внедрение PHP в HTML-код

В файле processorder.php, под тегом <h2> заголовка, прописываем такой код:

<?php

echo "3аказ обработан.";

?>

Сохраняем файл и проверяем работу нашей формы. Проверку проводим при запущенном локальном сервере, создав перед этим в папке сервера еще одну папку, в которой разместим наши два файла orderform.php и processorder.php.

После заполнения полей формы заказа и клике по кнопке "Отправить заказ" на экране мы получим такой результат:

Обработка формы

Заметьте, как написанный РНР-код встраивается в обычный HTML- файл. Попробуем просмотреть исходный код в браузере. Мы увидим следующие строки:

<html>

<head>

<title>Aвтозапчасти от Вована — результаты зaкaзa</title>

</head>

<body>

<h1>Автозапчасти от Вована</h1>

<h2>Результаты заказа</h2>

Заказ обработан.

</body>

</html>

Мы не обнаруживаем ни одной строки исходного РНР-кода. Это объясняется тем, что интерпретатор РНР просмотрел сценарий и заменил его соответствующими строками вывода. Это означает, что из РНР-кода можно построить чистый HTML- код, который можно просмотреть в любом браузере, — иначе, применяемый пользователем браузер совсем не обязан понимать РНР.

РНР-код интерпретируется и выполняется на Web-сервере, в отличие от JavaScript и других технологий клиентской стороны, которые интерпретируются и выполняются в среде Web-браузера на машине пользователя.

Теперь код, помещенный в этот файл, относится к следующим четырем типам:

■ HTML;

■ дескрипторы РНР;

■ операторы РНР;

■ пробелы.

Можно также добавлять комментарии.

РНР-дескрипторы

РНР-код в предыдущем примере начинается с конструкции <?php и завершается конструкцией ?>. Это аналогично всем HTML-дескрипторам, поскольку все они начинаются с символа “меньше” (<) и завершаются символом “больше” (>). Символы <?php и ?> называются РНР-дескрипторами, поскольку они указывают Web-серверу, где начинается и где заканчивается РНР-код. Любой текст, находящийся между этими дескрипторами, интерпретируется как РНР-код. Любой текст за пределами этих дескрипторов трактуется как обычный HTML-код. РНР-дескрипторы позволяют перейти с кода HTML на другой код.

Фактически существует четыре различных стиля РНР-дескрипторов. Все приведенные ниже фрагменты кода эквивалентны:

■ XML-стиль

<?php echo '<р>3аказ обработан.</р>'; ?>

■ Сокращенный стиль

<? echo '<р>3аказ обработан.</р>'; ?>

■ SCRIPT-стиль

<script language='php'> echo '<р>3аказ обработан.</р>'; </script>

■ ASP-стйль

<% echo '<р>3аказ обработан.</р>'; %>

 

Операторы РНР

Действия, которые должен выполнить интерпретатор РНР, задаются операторами РНР, помещаемыми между открывающим и закрывающим дескрипторами. В рассматриваемом примере используется только один тип оператора:

echo '<р>3аказ обработан.</р>';

Оператор echo выводит (или печатает) в окне браузера переданную ему строку. В нашем примере отображается текст "Заказ обработан" как показано на рис.1.2

В конце оператора echo находится точка с запятой. Она используется для разделения РНР-операторов подобно тому, как точка делит текст на предложения в обычном языке.

Пробелы

Пробелы между словами и символы табуляции, образуют категорию пробельных. Браузеры игнорируют пробельные символы в HTML-коде. Интерпретатор РНР действует точно так же. Рассмотрим два примера HTML-кода:

<h1>Добро пожаловать в компанию "Автозапчасти от Вована"!</h1><р>Что бы вы хотели заказать сегодня?</р>

и

<h1>Добро пожалрвать в компанию "Автозапчасти от Вована"!</h1>
<р>Что бы вы хотели заказать сегодня?</р>

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

Комментарии

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

Интерпретатор РНР игнорирует любой текст, помещенный в комментарий. По существу, синтаксический анализатор РНР попросту пропускает комментарии, которые для него равнозначны пробелам.

РНР поддерживает комментарии в стилях С, C++ и сценариев оболочки.

Так выглядит многострочный комментарий в стиле С, который может находиться в начале РНР-сценария:

/* Автор: Вован Кузнецов
Дата последнего изменения: 3 июня
Этот сценарий обрабатывает заказы клиентов.

*/

Многострочные комментарии должны начинаться с символов /* и завершаться символами */. Как и в языке С, многострочные комментарии не могут быть вложенными. Можно также использоваться однострочными комментариями в стиле C++:

echo '<р>3аказ обработан.</р>'; // Начало вывода заказа

или в стиле командных сценариев:

echo '<р>3аказ обработан.</р>'; # Начало вывода заказа

При использовании обоих этих стилей все, что следует за символом комментария (# или //) вплоть до конца строки или до завершающего РНР-дескриптора, в зависимости от того, что встретится раньше, рассматривается как комментарий.