Основная причина применения языка серверных сценариев — желание предоставить пользователям сайт с динамическим содержимым.
Рассмотрим простой пример. Заменим РНР-код в файле processorder.php на приведенный ниже.
<?php
echo "<p>Заказ обработан в";
echo date('H:i, j F');
echo "</p>";
?>
В этом коде используется встроенная РНР-функция date(), которая сообщает клиенту дату и время обработки его заказа. Значения будут меняться при каждом наполнении сценария.
РНР имеет обширную бибилиотеку функций, которыми можно воспользоваться при разработке веб-приложений. Большинству этих функций нужно передать некоторые данные, чтобы они возвращали соответствующие данные в качестве результатов.
Вызов функции имеет следующий вид:
date('H:i, jS F');
Строка, передаваемая функции данные заключена в круглые скобки. Это значение называется аргументом или параметром функции.
Откройте файл processorder.php.
В окне веб-браузера это будет выглядеть ТАК.
Аргумент, передаваемый функции date(), должен быть строкой формата, который определяет требуемый стиль вывода. Каждая буква в строке представляет часть строки даты и времени суток. Н представляет часы в 24-часовом формате, i — минуты с ведущим нулем, j — день месяца без ведущего нуля, F —полное название месяца.
Весь смысл использования формы заказа заключается в получении информации о заказе клиента. Получение подробной информации о том, что клиент ввел с клавиатуры, реализуется в РНР очень просто, тем не менее точный метод зависит от выбора версии РНР и от установок в вашем файле php.ini.
Внутри РНР-сценария к каждому из полей формы можно получить доступ как РНР-переменной, которая имеет то же имя, что и поле формы. В языке РНР переменные легко распознать, так как все они начинаются со знака доллара ($).
К содержимому поля filtr можно получить доступ следующими способами:
$filtr //короткий стиль
$_POST ['filtr'] //средний стиль
$_HTTP_POST_VARS ['filtr'] //длинный стиль
В этом примере и дальше мы будем использовать средний стиль для ссылок на переменные формы, но для простоты использования мы создадим короткие версии применения.
Рассмотрим все возможные методы применения стиля:
Короткий стиль, несмотря на прямой доступ к переменным, не нашел широкого распространения из-за условий безопастности.
Средний стиль предусматривает считывание переменных форм из массивов $_POST, $_GET, $_REQUEST. Какой массив использовать, зависит от того, какой метод был избран для передачи формы POST или GET. Кроме того, все данные, передаваемые посредством метода POST или GET, доступны через массив $_REQUEST.
Если форма была отправлена методом POST, то данные помещенные в поле filtr, будут сохранены в $_POST['filtr']; если же форма была передана с помощью метода GET — то в $_GET['filtr']. В том и другом случае данные будут доступны в $_REQUEST{'filtr'].
Эти массивы относятся к категории суперглобальных. Если вы работаете в более старых версиях РНР, то не смодете получить доступ к данным массивам.
При использовании длинного стиля, то доступ к ответу пользователя можно получить через $_HTTP_POST_VARS['filtr'] и $_HTTP_GET_VARS['filtr'].
Для копирования значения одной переменной в другую служит операция присваивания, для обозначения которой в языке РНР используется знак равенства (=).
Создадаим новую переменную с именем $filtr и скопируем в нее содержимое $_POST['filtr'].
$filtr = $_POST['filtr'];
То же самое проделаем с другими данными формы. Создадим для них котроткие переменные.
<?php
//создаем короткие имена переменным
$filtr = $_POST['filtr'];
$filtr_v = $_POST['filtr_v'];
$sparkqty = $_POST['sparkqty'];
?>
Поместим этот блок в самом начале сценария, чтобы потом его было легче найти.
Этот код создает три переменные $filtr, $filtr_v, $sparkqty и помещает в них данные, которые были переданы с помощью метода POST формы.
Выведем сценарий в окно веб-браузера. Для этого вставим в нижнюю часть следующие строки:
Теперь файл processorder.php будет выглядеть так:
<?php
//создаем короткие имена переменным
$filtr = $_POST['filtr'];
$filtr_v = $_POST['filtr_v'];
$sparkqty = $_POST['sparkqty'];
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Компания АВС. Результаты заказа</title>
<link href="../../svd.css" rel="stylesheet" type="text/css">
</head>
<body>
<h2>Компания АВС</h2>
<h3>Результаты заказа</h3>
<?php
echo "<p>Заказ обработан в";
echo date('H:i, j F');
echo "</p>";
echo "<p>Список вашего заказа:</p>";
echo $filtr. " - фильтр масляный <br>";
echo $filtr_v. " - фильтр воздушный<br>";
echo $sparkqty. " - свечи зажигания <br>";
?>
</body>
</html>
Вернитесь к файлу orderform.php, заполните форму и нажмите кнопку Отправить заказ.
В окне веб-браузера это будет выглядеть ТАК.
В сценарии опратор echo применялся для вывода значений, введенных пользователем в каждое из полей формы, за которым следовал некоторый пояснительный текст. Обратите внимание, что между именем переменной и следующим за ним текстом находится точка (.).
echo $filtr. " - фильтр масляный <br>";
Эта точка и есть операция коктенации строк, которая используется для объединения строк (фрагментов текста) в один текст. Эта операция позволяет избежать записи нескольких операторов echo.
Каждую. переменную, отличную от переменной типа массива, можно поместить в двойные кавычки, после чего применить к ней оператор echo.
echo "$filtr - фильтр масляный <br>";
Этот оператор эквивалентен первому. Оба формата допустимы, и какой из них употреблять — дело вкуса. Такой процесс замены переменной ее содержимым известен как вставка. Обратите внимание, что при вставке должны применяться только двойные кавычки. Нельзя помещать имена переменных в одинарные кавычки в подобных случаях.
Переменные и строки, конкатенацию которых мы осуществляем в каждом из операторов echo, имеют разную природу. Переменные — это символы, применяемые для обозначения данных. Строки — это по сути данные. Когда мы употребляем фрагменты неструктурированных данных в программе, подобной рассматриваемой, мы называем их литералом, чтобы отличить от переменной. $filt — это переменная, т.е символ, который представляет введенные клиентом данные. С другой стороны " - фильтр масляный <br>" — это литерал. Он представляет самого себя.
Для указания строк есть и третий способ. В РНР 4 был введен heredoc-синтаксис(<<<). Этот синтаксис позволяет определять длинные строки аккуратно, указывая маркер конца строки, который будет использоваться для завершения строки. В представленном ниже примере определяется и выводится длинная строка:
echo <<<theEnd
line1
line2
line3
theEnd
Лексима theEnd выбрана произвольно. При ее выборе должно лишь гарантироваться, что она нигде не встречается в тексте. Для завершения heredoc-строки необходимо поместить в начале новой строки лексему конца строки. heredoc-строки допускают вставку переменных, подобно строкам в двойных кавычках.