5W site logo 5W - мой домашний сайт-блог с картинками, кино и плюшками.

03-formy.html

3 Обработка данных пользователя из форм

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

В ниже представленных примерах описывается обработка информации пользователя из форм. К элементам форм относятся однострочное текстовое поле, текстовая область, переключатели, флажки, списки, скрытые поля форм, поля ввода паролей и кнопки. В примерах используются две Web-страницы. Первая страница содержит форму для ввода данных пользователя и имеет расширение .html. Вторая страница обрабатывает введенную информацию средствами языка PHP и имеет расширение .php [4].

Текстовые поля являются одними из наиболее известных элементов управления формами. В них пользователь Web-страницы может ввести любую информацию. Текстовые поля ввода создаются с помощью тега <INPUT>, в котором атрибуту “type” присваивается значение “text”.

Синтаксис:

<INPUT type="text" name="TextBox" size="n" maxlength="m">
где type - тип поля,
name - имя поля как элемента формы,
size - размер видимой части текстового поля на экране,
maxlength - размер поля.

Ниже представлен пример обработки информации из текстового поля. В данном примере присутствует HTML-форма для ввода имени любимого автора. Программа считывает введенную информацию и осуществляет вывод ее на экран.

HTML-код формы для ввода информации представлен ниже.

<HTML>
<HEAD>
<TITLE>Пример использования текстового поля</TITLE>
</HEAD>
<BODY>
<FORM method= "GET" action="text.php">
Кто Ваш любимый автор?
<INPUT name="Author" type="text">
<BR><BR>
<INPUT type="submit" value= "Отправить">
</FORM>
</BODY>
</HTML>

Реализация данного кода представлена на рисунке 3.1


Рисунок 3.1 - Ввод любимого автора

Таким образом, как видно на рисунке 3.1, в данном примере, при загрузке Web-страницы, на экране появляется однострочное текстовое поле, в которое пользователю необходимо ввести информацию и нажать кнопку “Отправить”. После этого подключится обработчик, указанный в атрибуте “action” тега “form”. В данном примере это файл text.php.

Код файла-обработчика представлен ниже.

<HTML>
<HEAD>
<TITLE>Пример использования текстового поля</TITLE>
</HEAD>
<BODY>
<B>Ваш любимый автор:<B>
<?php
echo $_GET['Author'];
?>
</BODY>
</HTML>

Реализация данного кода представлена на рисунке 3.2.


Рисунок 3.2 - Результат обработки введённого автора

Как видно на рисунке 3.2, на экран выводится информация о любимом авторе, то есть “Alexandr Pushkin”. Программа обработки введенных данных text.php, состоит из одной строки РНР-кода: “$_GET ['Author']”, которая отображает содержимое переменной “$Author”. Данная переменная не генерируется в РНР-коде, а автоматически создается, как часть массива “$_GET”, при передаче данных на сервер. При этом “GET” обозначает метод протокола HTTP, с помощью которого передаются данные.

В HTML-файле было создано текстовое поле с именем “Author”. Когда данные из формы передаются Web-серверу, создается массив “$_GET” с элементом “Author”. Также на рисунке 3.2, в строке окна браузера представлен результат запроса, в котором на сервер передается пара “переменная”=“значение”. В данном примере переменной “Author” присваивается значение “Alexandr Pushkin”, то есть на сервер передается пара “Author=Alexandr+Pushkin” и эта строка видна пользователю Web-страницы. Эта строка запроса вверху страницы выглядит следующим образом: “?Author=Alexandr+Pushkin”, так как используется метод GET. Использование метода GET вынуждает браузер отправлять информацию из формы в виде строки запроса, а не скрывать ее в теле HTTP-запроса [4].

Также необходимо отметить, что имена переменных в языке РНР чувствительны к регистру символов. Так переменные “Author” и “author” являются двумя разными переменными. Если, в представленном выше примере вместо переменной “$Author” написать “$author”, то содержимое данной переменной на сервер передаваться не будет и на экране не выведется (рисунок 3.3).


Рисунок 3.3 – Неправильное присваивание имени переменой

Текстовые области предназначены для того, чтобы принимать от пользователя предложения и даже целые строки. Для того чтобы создать текстовую область, следует использовать HTML-тег <TEXTAREA>.

Синтаксис:

<TEXTAREA name="textarea" rows="n" cols="m">
где name - имя поля как элемента формы,
rows - высота поля,
cols - ширина поля.

Ниже представлен пример использования текстовой области для ввода информации о любимых Web-сайтах пользователя.

HTML-код формы для ввода информации представлен ниже.

<HTML>
<HEAD>
<TITLE>
Пример использования текстовой области
</TITLE>
</HEAD>
<BODY>
<FORM method="POST" action="textarea.php">
Перечислите Ваши любимые Web-сайты
<TEXTAREA name="Websites" cols="50" rows="5">
http://
http://
http://
http://
</TEXTAREA>
<BR>
<BR>
<BR>
<INPUT type="submit" value="Отправить">
</FORM>
</BODY>
</HTML>

Результат работы данного кода представлен на рисунке 3.4.


Рисунок 3.4 – Ввод информации в текстовую область

Таким образом, как видно на рисунке 3.4, в данном примере, при загрузке Web-страницы на экране появляется текстовая область, в которую пользователю необходимо ввести информацию и нажать кнопку “Отправить”. После этого подключится обработчик, указанный в атрибуте “action” тега “form”. В данном примере это файл textarea.php.

Код файла-обработчика представлен ниже.

<HTML>
<HEAD>
<TITLE>
Пример использования текстовой области
</TITLE>
</HEAD>
<BODY>
Ваши любимые Web-сайты:
<?php
echo $_POST['Websites'];
?>
</BODY>
</HTML>

Результат работы данного кода представлен на рисунке 3.5.


Рисунок 3.5 – Вывод на экран любимых сайтов

Как видно на рисунке 3.5, на сервер передается информация о любимых Web-сайтах пользователя. В данном случае строка запроса не присоединяется, так как в программе был использован метод POST. Использование этого метода необходимо для того, чтобы скрыть информацию из формы при передаче на сервер [4].

Флажки являются еще одним элементом управления формами. Они применимы в ситуациях, когда пользователю необходимо ответить на вопрос, требующий строгого однозначного ответа “да” или “нет”, путем установки или снятия “галочки”. Флажки создаются с помощью тега <INPUT>, в котором атрибуту “type” присваивается значение “checkbox”.

Синтаксис:

<INPUT name="checkbox" type="checkbox" checked>
где type - тип поля,
name - имя поля как элемента формы,
checked - атрибут, который используется для того, чтобы отметить флажок, как выделенный.

Ниже приведен пример работы с флажками для проверки, является ли пользователь студентом Оренбургского государтсвенного университета.

HTML-код формы для ввода информации представлен ниже.

<HTML>
<HEAD>
<TITLE>Пример использования флажка</TITLE>
</HEAD>
<BODY>
<FORM method="POST" action="checkbox.php">
Вы студент ОГУ?
<INPUT name="Choice" type="checkbox">
<BR>
<BR>
<INPUT type="submit" value="Отправить">
</FORM>
</BODY>
</HTML>

Реализация данного кода представлена на рисунке 3.6


Рисунок 3.6 – Проверку принадлежности к числу студентов ОГУ

Таким образом, как видно на рисунке 3.6, в данном примере, при загрузке Web-страницы на экране появляется флажок, который пользователю необходимо отметить и нажать кнопку “Отправить”. После этого подключится обработчик, указанный в атрибуте “action” тега “form”. В данном примере это файл checkbox.php.

Код файла-обработчика представлен ниже.

<HTML>
<HEAD>
<TITLE> Пример использования флажка</TITLE>
</HEAD>
<BODY>
<?php
echo $_POST['Choice'] ;
?>
</BODY>
</HTML>

Реализация данного кода представлена на рисунке 3.7.


Рисунок 3.7 – Результат проверки

Как видно на рисунке 3.7, из формы на сервер передается не содержимое переменной, а лишь информация о том, был ли выбран данный флажок или нет. Если флажок был установлен пользователем, то значением данной переменной будет “on”. В противном случае, переменная вообще не будет содержать данных. Если же потребуется передать содержимое переменной на сервер, в исходном HTML-файле, в теге <INPUT>, в атрибуте “value” следует указать ее значение [4].

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

Ниже приведен пример работы с несколькими флажками для выбора языков программирования, которыми владеет пользователь.

HTML-код формы для ввода информации представлен ниже.

<HTML>
<HEAD>
<TITLE>Пример использования нескольких флажков</TITLE>
</HEAD>
<BODY>
<P>Выберите язык, на котором Вы программируете:<BR><BR>
<FORM method="POST" action="checkboxes.php">
<INPUT name="Choice1" type="checkbox" value="Delphi">
Вы программируете на Delphi?
<br>
<INPUT name="Choice2" type="checkbox" value="C++/C#">
Вы программируете на C++/C#?
<br>
<INPUT name="Choice3" type="checkbox" value="Assembler">
Вы программируете на Assembler?
<BR>
<BR>
<INPUT type="submit" value="Отправить">
</FORM>
</BODY>
</HTML>

Результат работы данного кода представлен на рисунке 3.8.


Рисунок 3.8 – Выбор языков программирования

Таким образом, как видно на рисунке 3.8, в данном примере, при загрузке Web-страницы появляются флажки, которые пользователю необходимо отметить и нажать кнопку “Отправить”. После этого подключится обработчик, указанный в атрибуте “action” тега “form”. В данном примере это файл checkboxes.php.

Код файла-обработчика представлен ниже.

<HTML>
<HEAD>
<TITLE>
Пример использования нескольких флажков
</TITLE>
</HEAD>
<BODY>
<P>Вы выбрали ответ:</P>
<?php
echo "$_POST[Choice1]<br>";
echo "$_POST[Choice2]<br>";
echo "$_POST[Choice3]<br>";
?>
</BODY>
</HTML>

Результат работы данного примера представлен на рисунке 3.9.


Рисунок 3.9 – Результат выбора языков

Как видно на рисунке 3.9, пользователем был выбран только один флажок и на экран выведено содержимое переменной, равное “C++/C#”. Содержимое остальных переменных выведено не было, так как пользователь не установил другие флажки. Таким образом, в соответствующие PHP-переменные данные передаваться не будут.

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

Переключатели создаются с помощью дескриптора <INPUT>, в котором атрибуту “type” присваивается значение “radio”.

Синтаксис:

<INPUT name="radio" type="radio" checked>
где type - тип поля,
name - имя поля как элемента формы,
checked - атрибут, который используется для того, чтобы отметить переключатель, как выделенный.

Ниже приведен пример использования переключателей для выбора названия столицы России.

HTML-код формы для ввода информации представлен ниже.

<HTML>
<HEAD><TITLE>Пример использования переключателей</TITLE>
</HEAD>
<BODY>
<FORM method="GET" action="radio.php">
Выберите название столицы России
<BR>
<BR>
<INPUT name="Question" type="radio" value="Москва">
Москва
<br>
<INPUT name="Question" type="radio" value="Екатеринбург">
Екатеринбург
<br>
<INPUT name="Question" type="radio" value="Оренбург">
Оренбург
<BR>
<BR>
<INPUT type="submit" value="Отправить">
</FORM>
</BODY>
</HTML>

Результат работы данного кода представлен на рисунке 3.10.


Рисунок 3.10 – Выбор столицы России

Таким образом, как видно на рисунке 3.10, в данном примере, при загрузке Web-страницы на экране появляются переключатели, из которых пользователю необходимо отметить только один и нажать кнопку “Отправить”. После этого подключится обработчик, указанный в атрибуте “action” тега “form”. В данном примере это файл radio.php.

Код файла-обработчика представлен ниже.

<HTML>
<HEAD><TITLE> Пример использования переключателей </TITLE>
</HEAD>
<BODY>
<?php
echo "Вы выбрали ответ: $_GET[Question]";
?>
</BODY>
</HTML>

Реализация данного кода представлена на рисунке 3.11.


Рисунок 3.11 – Результат выбора столицы

Как видно на рисунке 3.11, на экран выводится значение переменной “$Question”, равное “Москва”. Необходимо отметить, что в коде файла radio.html создается три переключателя, имеющих одинаковое имя, но разные значения. Однако при обработке данных с помощью сценария отображается содержимое только одной переменной, так как может быть только один правильный ответ. В этом заключается основное отличие использования переключателей от флажков [4].

Списки или выпадающие списки представляют собой элементы управления формами, которые обычно отображают несколько объектов. Иногда они имеют стрелку, которая позволяет пользователю перемещаться вниз к дополнительным объектам. В языке HTML списки создаются с помощью тегов <SELECT> и <OPTION>. Тег <SELECT>, создающий список, охватывает несколько дескрипторов <OPTION>, каждый из которых содержит текст, соответствующий объекту в списке.

Синтаксис:

<SELECT name="select" multiple size="m">
<OPTION value="value 1">
<OPTION value="value 2">
...
<OPTION value="value n">
</SELECT>
где name - имя поля как элемента формы,
multiple - множественный выбор элементов списка,
size - размер видимой части списка,
value - значение переменной.

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

HTML-код формы для выбора информации представлен ниже.

<HTML>
<HEAD>
<TITLE>Пример использования списков</TITLE>
</HEAD>
<BODY>
<FORM method="POST" action="listbox.php">
Выберите бытовую технику
<BR>
<BR>
<SELECT name="Tech">
<OPTION value="Стиральная машина">Стиральная машина </OPTION>
<OPTION value=" Утюг">Утюг</OPTION>
<OPTION value="Микроволновая печь">Микроволновая печь </OPTION>
<OPTION value="Пылесос">Пылесос</OPTION>
</SELECT>
<BR>
<BR>
Выберите фирму-производителя
<BR>
<BR>
<SELECT name="Production[]" multiple size=4>
<OPTION value="LG">LG</OPTION>
<OPTION value=" Samsung">Samsung</OPTION>
<OPTION value=" Panasonic">Panasonic</OPTION>
<OPTION value="Sony">Sony</OPTION>
</SELECT>
<BR>
<BR>
<INPUT TYPE="submit" value="Отправить">
</FORM>
</BODY>
</HTML>

Результат работы данного кода представлен на рисунке 3.12.


Рисунок 3.12 – Выбор техники и фирмы

Таким образом, как видно на рисунке 3.12, в данном примере, при запуске Web-страницы на экране появляются два списка, в которых необходимо выбрать информацию и нажать кнопку “Отправить”. После этого подключится обработчик, указанный в атрибуте “action” тега “form”. В данном примере это файл listbox.php.

Код файла-обработчика представлен ниже.

<HTML>
<HEAD>
<TITLE>Пример использования списков</TITLE>
</HEAD>
<BODY>
<?php
echo "Бытовая техника: $_POST[Tech] ";
$Choice0 = $_POST['Production'][0];
$Choice1 = $_POST['Production'][1];
$Choice2 = $_POST['Production'][2];
$Choice3 = $_POST['Production'][3];
echo "<br>Фирма производитель: ";
echo "$Choice0 ";
echo "$Choice1 ";
echo "$Choice2 ";
echo "$Choice3 ";
?>
</BODY>
</HTML>

Результат работы данного примера представлен на рисунке 3.13.


Рисунок 3.13 – Результат выбора техники и фирмы

Как видно на рисунке 3.13, на экран выводятся результаты выбора пользователя. В данном случае он выбрал технику утюг и фирму производителя “LG” и “Samsung”. То есть, при выборе бытовой техники перемененной “$Tech” присвоилось значение “Утюг”. В сценарии listbox.php атрибут “name” связан с PHP-переменной “$_POST ['Tech']”.

При выборе фирмы-производителя атрибуту “name” было присвоено значение “$Production[]”, где квадратные скобки интерпретируют соответствующую переменную как массив. Список содержит четыре пункта, поэтому в массиве будет четыре элемента. Содержимое каждого из них необходимо отобразить.

При работе с массивами в языке PHP индекс массива ссылается на элемент, а нумерация элементов начинается с нуля. Тогда переменная “$Production[0]” будет ссылаться на первый пункт в списке, то есть LG, а переменная “$Production[1]” на второй пункт в списке, то есть Samsung. Элементы “$Production[2]” и “$Production[3]” не содержат ничего, так как пользователь выбрал только два первых пункта списка [4].

При работе с формами может возникать необходимость получения информации, содержащейся на одной Web-странице и передачи ее другой Web-странице, без какого-либо ввода данных пользователем. В теге <INPUT> для этого существует еще один параметр, который позволяет передавать информацию в поле, как если бы оно было текстовым, скрывая, при этом, сам элемент управления и его значение от пользователя. Такое поле называется скрытым полем формы (или скрытым элементом управления) [4].

Действие скрытых полей несколько отличается от действия уже рассмотренных элементов управления. Их можно использовать для отправки информации, хранящейся в РНР-переменных.

Чтобы использовать скрытое поле в PHP-странице, можно написать всю HTML-форму в операторах echo, передающих содержимое PHP-переменных через HTML-теги [4].

Синтаксис:

<INPUT type="hidden" name="hidden" value="message">
где type - тип поля,
name - имя поля как элемента формы,
value - содержимое поля.

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

HTML-код формы для выбора информации представлен ниже.

<HTML>
<HEAD><TITLE> Использование скрытых полей форм </TITLE></HEAD>
<BODY>
<?php
$Message1="Иванов";
$Message2="Петров";
$Message3="Cидоров";
echo "<FORM method='GET' action='hidden.php'>";
echo "Кто из следующих персонажей получит приз?";
echo "<SELECT name='ListBox'>";
echo "<OPTION>$Messagel</OPTION>";
echo "<OPTION>$Message2</OPTION>";
echo "<OPTION>$Message3</OPTION>";
echo "</SELECT><br><br>";
echo "<INPUT type='hidden' name='Hidden1' value='$Message1'> ";
echo "<input type='hidden' name='Hidden2' value='$Message2'>";
echo "<INPUT type='hidden' name='Hidden3' value='$Message3'>";
echo "<INPUT type='submit' value='Отправить'>";
echo "</FORM>";
?>
</BODY>
</HTML>

Результат работы данного кода представлен на рисунке 3.14.


Рисунок 3.14 – Выбор персонажа

Таким образом, как видно на рисунке 3.14, в данном примере, при загрузке Web-страницы на экране появляется список, в котором пользователю необходимо выбрать информацию. При этом форма, отправляющая скрытые поля, содержит элементы данного списка в переменных “$Hidden1”, “$Hidden2”, “$Hidden3”, содержащих текст “Иванов”, “Петров”, “Сидоров” соответственно. После нажатия кнопки “Отправить”, подключается обработчик, указанный в атрибуте “action” тега “form”. В данном примере это файл hidden.php.

Код файла-обработчика представлен ниже.

<HTML>
<HEAD>
<TITLE>Использование скрытых полей форм</TITLE>
</HEAD>
<BODY>
<?php
echo "Было три варианта:<br>";
echo "$_GET[Hidden1]<br>";
echo "$_GET[Hidden2]<br>";
echo "$_GET[Hidden3]<br>";
echo "<br>Вы выбрали:<br>";
echo "$_GET[ListBox]";
?>
</BODY>
</HTML>

Результат работы данного примера представлен на рисунке 3.15.


Рисунок 3.15 – Результат выбора персонажа

Как видно на рисунке 3.15, на экран выводятся исходные три варианта для выбора (“Иванов”, “Петров”, “Сидоров”), а затем выводится выбор пользователя. В данном случае это “Сидоров”.

Главная особенность использования этого способа заключается в том, что можно опустить апострофы в именах переменных массива. Для формирования списка создается три переменных. Затем с помощью echo-операторов создается форма. Она ничем не отличается от обычной HTML-формы, за исключением того, что там, где нужны кавычки, следует писать не двойные, а одинарные кавычки, иначе echo-оператор будет работать неправильно.

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

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

Синтаксис:

Введите пароль:
<INPUT name="password" type="password">
где type - тип поля,
name - имя поля как элемента формы.

Обработка полей ввода паролей и текстовых полей ничем не отличается. Следует, однако, отметить, что если для передачи данных из поля такого типа использовать метод GET, то пароль в строке запроса не шифруется и будет видимым. Это не означает, что метод POST является безопасным методом передачи данных. Речь идет только о том, что информация при передаче методом POST непосредственно не показывается пользователю. Чтобы действительно обеспечить безопасность передаваемых данных, необходимо применять какой-либо специальный протокол для реального шифрования данных.

Кнопка типа Submit используется для передачи данных пользователя на сервер.

Синтаксис:

<INPUT type="submit" name="submit" value="отправить">

где type - тип поля,

name - имя поля как элемента формы,

value - надпись на кнопке.

Кнопка инициирует отправку данных пользователя из формы на сервер. При нажатии на кнопку “submit”, данные будут передаваться на обработчик, указанный в атрибуте “action” тега “form”. При этом в массиве “$_GET” или “$_POST” будет создана переменная “submit”.

Кнопка типа Reset устанавливает все элементы управления на форме в их первоначальное состояние.

Синтаксис:

<INPUT type="reset" name="reset" value="сброс">

где type - тип поля,

name - имя поля как элемента формы,

value - надпись на кнопке.

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

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

Далее представлен пример совместного использования элементов управления формами и основных операторов языка PHP, для создания и обработки формы заявки на получение кредита в банке. Пример состоит из двух Web-страниц. На первой странице генерируется форма для ввода информации пользователя по получению кредита. Вторая страница принимает переданные значения и выполняет некоторые простые операции над ними, чтобы принять или отклонить заявку на кредит [4].

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

Формула расчета кредита вычисляется по трем переменным:

  • переменная нормы зарплаты: годовая зарплата пользователя, разделенная на 5;
  • переменная возрастного ценза: возраст пользователя, разделенный на 10, результат округляется в меньшую сторону до ближайшего целого числа, а затем уменьшается на единицу;
  • переменная кредитной нормы: норма зарплаты, умноженная на возрастной ценз [4].

HTML-код формы для ввода информации представлен ниже.

<HTML>
<HEAD><TITLE>Заявка на получение кредита</TITLE></HEAD>
<BODY>
<B>Заявка на получение кредита в Alphabank.</B>
<FORM method="POST" action="loan.php">
Имя:
<INPUT name="FirstName" type="text">
Фамилия:
<INPUT name="LastName" type="text">
Возраст:
<INPUT name="Age" type="text" size="3">
<BR>
<BR>
АДРЕС:
<TEXTAREA name="Address" rows="4" cols="40">
</TEXTAREA>
<BR>
<BR>
Укажите размер Вашей текущей заработной платы:
<SELECT NAME="Salary">
<OPTION VALUE=0>ДО $10000</OPTION>
<OPTION VALUE=10000>$10000 - $25000</OPTION>
<OPTION VALUE=25000>$25000 - $50000</OPTION>
<OPTION VALUE=50000>Свыше $50000</OPTION>
</SELECT>
<BR><BR>
Выберите сумму необходимого кредита:<BR><BR>
<INPUT name="Loan" type="radio" value="1000">$1000 под 8,0% годовых
<br>
<INPUT name="Loan" type="radio" value="5000">$5000 под 11,5% годовых
<br>
<INPUT name="Loan" type="radio" value="10000">$10000 под 15,0% годовых
<BR>
<BR>
<INPUT type="submit" value="Подать заявку">
<INPUT type="reset" value="Очистить">
</FORM>
</BODY>
</HTML>

Реализация данного кода представлена на рисунке 3.16.


Рисунок 3.16 – Форма заявки на кредит

Таким образом, как видно на рисунке 3.16, в данном примере, при загрузке Web-страницы на экране появляется форма для ввода информации, в которую пользователю необходимо ввести свои данные и нажать кнопку “Подать заявку”, чтобы отправить данные, либо кнопку “Очистить”, для сброса данных. После этого подключится обработчик, указанный в атрибуте “action” тега “form”. В данном примере это файл loan.php.

Код файла-обработчика представлен ниже.

<HTML>
<HEAD><TITLE>Заявка на получение кредита </TITLE></HEAD>
<BODY>
<B> Заявка на получение кредита в Alphabank </B>
<BR><BR>
<?php
$SalaryAllowance = $_POST['Salary']/5;
$AgeAllowance = ($_POST['Age']/10 - ($_POST['Age']%10)/10)-1;
$LoanAllowance = $SalaryAllowance * $AgeAllowance;
echo "Запрашиваемый кредит: $_POST[Loan]<br>";
echo "Допустимая сумма кредита: $LoanAllowance<br><br>";
if ($_POST['Loan'] <= $LoanAllowance) echo "Да, $_POST[FirstName]
$_POST[LastName] , мы удовлетворим Вашу заявку";
if ($_POST['Loan'] > $LoanAllowance) echo "Извините,
$_POST[FirstName] $_POST[LastName], в настоящее время мы не можем принять Вашу заявку";
?>
</BODY>
</HTML>

Реализация данного кода представлена на рисунке 3.17.


Рисунок 3.17 – Результат подачи заявки

Как видно на рисунке 3.17, на экран выводится информация о заказе пользователя Иванова Ивана, который запрашивает сумму кредита $1000. В программе вычисляется сумма допустимого кредита, в данном случае $10000. При проверке оказалось, что допустимая сумма кредита больше запрашиваемой суммы, то есть 10000>1000. В таком случае, приложение выдает положительный ответ, то есть банк может выдать кредит данному пользователю, что и выводится на экран.

При этом при передаче информации на сервер был использован метод POST, так как этот метод скрывает конфиденциальную информацию от пользователей.

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

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

Ниже приведен пример обработки заявок на получение кредита, выполненный более устойчивым по отношению к пользова¬тельским ошибкам, за счет внедрения проверки HTML-формы.

HTML-код формы для ввода информации представлен ниже.

<HTML>
<HEAD><TITLE>Заявка на получение кредита</TITLE></HEAD>
<BODY>
<B>Заявка на получение кредита в Alphabank.</B>
<FORM method="POST" action="loan.php">
<INPUT type="hidden" name="posted" value="true"> <BR>
Имя: <INPUT name="FirstName" type="text">
Фамилия: <INPUT name="LastName" type="text">
Возраст: <INPUT name="Age" type="text" size="3">
<BR><BR> Адрес:
<TEXTAREA name="Address" rows="4" cols="40">
</TEXTAREA>
<BR><BR> Укажите размер Вашей текущей заработной платы:
<SELECT name="Salary">
<option value=0>До $10000</option>
<option value=10000>Oт $10000 до $25000</option>
<option value=25000>Oт $25000 до $50000</option>
<option value=50000>Свыше $50000</option>
</SELECT>
<BR><BR>Выберите сумму необходимого кредита: <BR>
<INPUT name="Loan" type="radio" value="1000">$1000 под 8,0% годовых <BR>
<INPUT name="Loan" type="radio" value="5000">$5000 под 11,5% годовых<BR>
<INPUT name="Loan" type="radio" value="10000">$10000 под 15,0% годовых <BR><BR>
<INPUT type="submit" value="Подать заявку">
<INPUT type="reset" value="Очистить">
</FORM>
</BODY>
</HTML>

Реализация данного кода представлена на рисунке 3.18.


Рисунок 3.18 – Форма заявки на получение кредита

Таким образом, как видно на рисунке 3.18, в данном примере, при загрузке Web-страницы на экране появляется форма для ввода информации, в которую пользователю необходимо ввести свои данные. Затем нужно нажать кнопку “Подать заявку”, чтобы отправить данные, либо “Очистить” для сброса данных. После этого подключится обработчик, указанный в атрибуте “action” тега “form”. В данном примере это файл loan.php.

Код файла-обработчика представлен ниже.

<HTML>
<HEAD>
<TITLE>Заявка на получение кредита</TITLE>
</HEAD>
<BODY>
<B>Заявка на получение кредита в Alphabank.</B>
<?php
if (isset($_POST['posted']))
{ $age = $_POST['Age'];
$first_name = $_POST['FirstName'];
$last_name = $_POST['LastName'];
$address = $_POST['Address'];
$loan = $_POST['Loan'];
//передача данных из формы на сервер
if ($first_name == "" or $last_name == "")
{ echo "Необходимо ввести имя - нажмите кнопку Назад и заполните форму еще раз";
exit; }
//проверка введенного имени пользователя
if ($age < 10 or $age > 130)
{ echo "Введен некорректный возраст - нажмите кнопку Назад и заполните форму еще раз";
exit; }
//проверка введенного возраста пользователя
if ($address == "")
{ echo " Необходимо ввести адрес - нажмите кнопку Назад и заполните форму еще раз";
exit; }
//проверка введенного адреса пользователя
if ($loan != "1000" and $loan != "5000" and $loan != "10000")
{ echo "Необходимо ввести сумму ссуды - нажмите кнопку Назад и заполните форму еще раз ";
exit; }}
//проверка введенной суммы запрашиваемого кредита
?>
</BODY>
</HTML>

Рисунок 3.19 – Результат подачи заявки в банк. Сообщение об ошибке

Как видно на рисунке 3.19, на экран выводится одно из сообщений об ошибке, так как пользователь не заполнил некоторые поля формы. В данном случае в программе проверяется существование заданной переменной с помощью встроенной функции isset. Также в программе проверяется, не ввел ли пользователь очевидно неверную информацию. Если необходимое условие не соблюдается, то сценарий отображает сообщение об ошибке и завершает работу [4].

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

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

HTML-код программы проверки деления чисел представлен ниже.

<HTML>
<HEAD>
<TITLE>Пример использования оператора if</TITLE>
</HEAD>
<BODY>
<?php
if (isset($_POST['posted']))
{ $first_number = $_POST['first_number'];
$second_number = $_POST['second_number'];
if ($second_number == 0) echo "На нуль делить нельзя!!!<BR>";
else { $answer = $first_number / $second_number;
echo "Ответ: " . $answer . "<BR>";}
} //проверка введенных чисел пользователя
?>
<B>Деление любого числа (кроме нуля)</B>
<HR align="left" width="300" color="gray"><BR>
<FORM method="POST" action="example.php">
<INPUT type="hidden" name="posted" value="true">
Пожалуйста, введите первое число: <BR>
<INPUT name="first_number" type="text" value="0"><BR>
Пожалуйста, введите второе число: <BR>
<INPUT name="second_number" type="text" value="0">
<BR>
<BR>
<INPUT type="submit" value="Разделить">
</FORM>
</BODY>
</HTML>

Пример реализации данного кода приведен на рисунках 3.20 и 3.21.


Рисунок 3.20 – Деление на нуль

Рисунок 3.21 – Ошибка при делении на нуль

Таким образом, как видно на рисунке 3.20, в данном примере, при загрузке Web-страницы на экране появляется форма для ввода чисел, которые требуется поделить между собой. Затем необходимо нажать кнопку “Разделить”.

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

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

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

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

Далее представлен пример совместного использования операторов сравнения языка PHP при работе с формами. В данном примере PHP-программа “загадывает” число между 1 и 10, а пользователю необходимо угадать это число. Число задается с помощью математической функции rand.

Функция rand используется для генерации случайных чисел в заданных пределах. Этой функции необходимо передать минимальное и максимальное значение, разделенное запятой, после чего она сгенерирует случайное число между двумя этими значениями [4].

HTML-код программы проверки введенных чисел представлен ниже.

<HTML>
<HEAD>
<TITLE>Пример использования операторов сравнения</TITLE>
</HEAD>
<BODY>
<?php
if (isset($_POST['posted']))
{
$number = rand(1,10);
if ($_POST['guess'] > $number)
{
echo "<B>Baшe число слишком большое.</B>";
echo "<br>Загаданное число:
$number. Вы проиграли. Попробуйте еще раз.<HR>";
}
else if ($_POST['guess'] < $number)
{
echo "<B>Baшe число слишком маленькое.</B>";
echo "Загаданное число:
$number. Вы проиграли. Попробуйте еще раз. <HR>";
}
else
{
echo "<br> Загаданное число:
$number. Вы выиграли!<HR>";}
}
?>
<FORM method="POST" action="example.php">
<INPUT type="hidden" name="posted" value="true">
Угадайте число от 1 до 10:
<INPUT name="guess" type="text">
<BR>
<BR>
<INPUT type="submit" value="Отправить">
</FORM>
</BODY>
</HTML>

На рисунке 3.22 представлен результат выполнения данного кода.


Рисунок 3.22 – Использование операторов сравнения

Таким образом, как видно на рисунке 3.22, в данном примере при загрузке Web-страницы появляется поле формы, в которую пользователь должен ввести число. После этого, с помощью операторов сравнения, осуществляется проверка соответствия введенного и загаданного числа. Как видно на рисунке, загаданное число было равно восьми, а число пользователя четырем, то есть число пользователя слишком маленькое. О чем было выведено соответствующее сообщение.

При работе с формами в языке PHP, помимо операторов сравнения, также часто используют операторы неравенства для проверки введенной пользователем информации. Ниже приведен пример использования этих операторов для проверки информации о столице России [4].

HTML-код программы проверки введенных данных представлен ниже.

<HTML>
<HEAD>
<TITLE>Пример использования операторов равенства и неравенства
</TITLE>
</HEAD>
<BODY>
<?php
if (isset($_POST['posted'])) {
if ($_POST['Question'] == "Москва") {
echo "<B>Верно, $_POST['Question'] - правильный ответ.</B><HR>";}
if ($_POST['Question'] != "Москва") {
echo "<B>Неверно, $_POST['Question'] - неправильный ответ.
</B><HR>"; }}
?>
<FORM method="POST" action="example.php">
<INPUT type="hidden" name="posted" value="true">
Назовите столицу России<BR><BR>
<INPUT name="Question" type="radio" value="Москва">
Москва <BR>
<INPUT name="Question" type="radio" value="Екатеринбург">
Екатеринбург <BR>
<INPUT name="Question" type="radio" value="Оренбург">
Оренбург<BR><BR>
<INPUT type="submit" value="Отправить ответ">
</FORM>
</BODY>
</HTML>

На рисунке 3.23 представлен результат работы данного кода.


Рисунок 3.23 – Проверка на правильность выбора столицы России

Таким образом, как видно на рисунке 3.23, в данном примере, при загрузке Web-страницы появляется форма, в которой пользователю необходимо выбрать один из трех вариантов ответа и нажать кнопку “Отправить ответ”. После этого введенный ответ сравнивается с правильным, и выводится соответствующее сообщение. В данном случае пользователю выводится сообщение “Верно, Москва – правильный ответ”, что означает, что он правильно выбрал вариант ответа.

При обработке данных пользователя из форм на стороне сервера также используются логические операторы. К ним относятся такие операторы как операторы логического “И” (and), логического “ИЛИ” (or), логического исключающего “ИЛИ” (xor), а также операторы логического “НЕ”(!).

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

HTML-код программы проверки информации пользователя представлен ниже.

<HTML>
<HEAD>
<TITLE>Пример использования логических операторов</TITLE>
</HEAD>
<BODY>
<B>Компания Мир Авто. Прокат автомобилей.</B>
<?php
if (isset($_POST['posted'])) {
if ($_POST['age'] > 20 and $_POST['license'] == "on") {
echo "Уважаемый $_POST['first_name'] $_POST['last_name']. Вам можно предоставить машину напрокат.<HR>";}
if ($_POST['age'] < 21 or $_POST['license'] == "") {
echo "Уважаемый $_POST['first_name'] $_POST['last_name']. К сожалению, мы не можем предоставить Вам машину напрокат.<HR>";}}
else {
?>
<FORM method="post" action="car.php">
<INPUT type="hidden" name="posted" value="true">
Имя: <INPUT name="first_name" type="text">
Фамилия: <INPUT name="last_name" type="text">
Возраст: <INPUT name="age" type="text"size="3"><BR><BR>
Адрес: <TEXTAREA name="address" rows=4 cols=40>
</TEXTAREA><BR><BR>
Ваши водительские права действительны?
<INPUT name="license" type="checkbox"><BR><BR>
<INPUT type="submit" value="Отправить заявку">
</FORM>
</BODY>
</HTML>
<?php
}
?>

Результат работы данного кода представлен на рисунках 3.24 и 3.25.


Рисунок 3.24 – Проверка возможности выдачи автомобилей

Рисунок 3.25 – Результат проверки

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

Наряду с другими операторами цикла, в языке PHP также используется оператор switch для проверки данных пользователя из форм.

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

HTML-код программы расчета стоимости путевок представлен ниже.

<HTML>
<HEAD>
<TITLE>Пример использования оператора switch</TITLE>
</HEAD>
<BODY>
<B>Заказ путевок в отели Турции.</B>
<BR><BR>
<?php
if (isset($_POST['posted'])) {
$price = 500;
$starmodifier = 3;
$citymodifier = 1;
$destination = $_POST['destination'];
$destgrade = $_POST['destination'] . $_POST ['grade'];
switch($destgrade){
case "Kimerthree":
$citymodifier = 2;
$price = $price * $citymodifier;
echo "Недельная стоимость проживания в 3-звёздочном отеле города Кемер: $price";
break;
case "Kimerfour":
$citymodifier = 2;
$starmodifier = 4;
$price = $price * $citymodifier * $starmodifier;
echo "Недельная стоимость проживания в 4-звёздочном отеле города Кемер: $price";
break;
case "Kimerfive":
$citymodifier = 2;
$starmodifier = 5;
$price = $price * $citymodifier * $starmodifier;
echo "Недельная стоимость проживания в 5-звёздочном отеле города Кемер: $price";
break;
case "Antaliathree":
$citymodifier = 3.5;
$price = $price * $citymodifier;
echo "Недельная стоимость проживания в 3-звёздочном отеле города Анталия: $price";
break;
case "Antaliafour":
$citymodifier = 3.5;
$starmodifier = 4;
$price = $price * $citymodifier * $starmodifier;
echo "Недельная стоимость проживания в 4-звёздочном отеле города Анталия: $price";
break;
case "Antaliafive":
$citymodifier = 3.5;
$starmodifier = 5;
$price = $price * $citymodifier * $starmodifier;
echo "Недельная стоимость проживания в 5-звёздочном отеле города Анталия: $price";
break;
case "Alaniathree":
$price = $price * $citymodifier;
echo "Недельная стоимость проживания в 3-звёздочном отеле города Алания: $price";
break;
case "Alaniafour":
$starmodifier = 4;
$price = $price * $citymodifier * $starmodifier;
echo "Недельная стоимость проживания в 4-звёздочном отеле города Алания: $price";
break;
case "Alaniafive":
$starmodifier = 5;
$price = $price * $citymodifier * $starmodifier;
echo "Недельная стоимость проживания в 5-звёздочном отеле города Алания: $price";
break;
default:
echo "Выберите снова";
break; }}
?>
<FORM method="POST" action="holiday.php">
<INPUT type="hidden" name="posted" value="true">
<HR align="left" width="300" color="gray">
В каком городе Вы хотели бы провести отпуск? <BR><BR>
<INPUT name="destination" type="radio" value="Alania"> Алания
<BR>
<INPUT name= "destination" type="radio" value="Kimer"> Кемер
<BR>
<INPUT name="destination" type="radio" value="Antalia">Анталия<BR><BR>
В отеле какого класса Вы хотели бы остановиться? <BR><BR>
<INPUT name="grade" type="radio" value="three">Три звездочки
<BR>
<INPUT name="grade" type="radio" value="four">Четыре звездочки <BR>
<INPUT name="grade" type="radio" value="five">Пять звездочек
<BR><BR>
<INPUT type="submit" value="Отправить заявку">
</FORM>
</BODY>
</HTML>

Реализация данного кода представлена на рисунке 3.26.

Таким образом, как видно на рисунке 3.26, в данном примере, при загрузке Web-страницы на экране появляется форма заказа путевки, в которой пользователю необходимо указать город, в котором он хотел бы провести отпуск, а также класс отеля. При нажатии на кнопку “Отправить заказ”, рассчитывается стоимость путевки, в зависимости от выбора пользователя. После этого стоимость путевки выводится на экран [4].

При этом обрабатываются все возможные варианты. Три варианта городов, умноженные на три класса отеля. К таким вариантам относятся: город Алания и трехзвездочный, четырехзвездочный и пятизвездочный отели. Также, город Кемер и трехзвездочный, четырехзвездый и пятизвездочный отели. И, наконец: город Анталия и трехзвездочный, четырехзвездочный, пятизвездочный отели.

В данном примере пользователь указал город Анталия и пятизвездочный класс отеля. В соответствии с этим выбором рассчиталась стоимость путевки, равная $8750, включающая недельное проживание, которая была выведена на экран.


Рисунок 3.26 – Выбор города и класса отеля при заказе путевок

Оператор while является одним из популярных операторов цикла, используемым при обработке данных пользователя из форм в языке PHP.

Ниже представлен пример обработки заявки на получение кредита в банке Alphabank. При этом пользователю предлагается выбрать сумму кредита, а также ввести сумму, которую он планирует вносить ежемесячно в счет погашения кредита. После этого в программе рассчитывается период, в течение которого пользователь сможет погасить выбранный кредит [4].

HTML-код программы расчета срока погашения кредита представлен ниже.

<HTML>
<HEAD>
<TITLE>Пример использования цикла while</TITLE>
</HEAD>
<BODY>
<B>Заявка на получение кредита Alphabank.</B>
<?php
if (isset($_POST['posted'] )) {
$duration = 0;
switch ($_POST['loan']) {
case "1000";
$interest=8;
break;
case "5000";
$interest=11,5;
break;
case "10000";
$interest=15,0;
break;
default:
echo "Вы не выбрали сумму кредита<HR>";
exit; }
while ($_POST['loan'] > 0)
{
$duration = $duration + 1;
$monthly = $_POST['month'] - ($_POST['loan']*$interest/100);
if ($monthly <= 0)
{
echo "Чтобы погасить кредит, требуются более крупные
ежемесячные платежи<HR>";
exit; }
$_POST['loan'] = $_POST['loan'] - $monthly;
}
echo "Для погашения кредита при процентной ставке $interest% понадобится $duration месяцев.<HR>"; }
?>
<FORM method="POST" action="loan.php">
<INPUT type="hidden" name="posted" value="true"><BR>
Выберите сумму необходимого кредита:
<BR>
<INPUT name="loan" type="radio" value="1000">
$1000 под 8,0% годовых <BR>
<INPUT name="loan" type="radio" value="5000">
$5000 под 11,5% годовых <BR>
<INPUT name="loan" type="radio" value="10000">
$10000 под 15,0% годовых <BR><BR>
Введите сумму ежемесячного платежа в долларах:
<INPUT name="month" type="text" size="5"> <BR>
<INPUT type="submit" value="Подать заявку">
</FORM>
</BODY>
</HTML>

Реализация данного кода представлена на рисунке 3.27.


Рисунок 3.27 – Расчет времени погашения кредита в месяцах

Таким образом, как видно на рисунке 3.27, в данном примере, при загрузке Web-страницы на экране появляется форма для расчета периода выплаты кредита. В данной форме пользователю необходимо выбрать сумму кредита, а также ввести предполагаемую сумму ежемесячного платежа. После этого нажать кнопку “Подать заявку”. После обработки заявки на экран выведется сообщение, в котором пользователь сможет узнать, сколько ему месяцев необходимо будет выплачивать кредит.

Как видно на рисунке 3.27, пользователь выбрал сумму кредита $1000 под 8% годовых и сумму ежемесячного платежа $300. В результате программа выдала ответ, что, при заданных параметрах, пользователю понадобится 5 месяцев, чтобы погасить выбранный кредит.

При этом необходимо отметить, что если пользователь введет слишком маленькую сумму ежемесячного платежа, ему выводится соответствующее сообщение “Чтобы погасить кредит, требуются более крупные ежемесячные платежи”. Так как, при этом условии цикл будет продолжаться бесконечно долго, потому что условие “сумма кредита” больше нуля всегда будет верным [4].

Поэтому, если создается условие для бесконечного цикла, следует выйти из цикла с помощью команды exit, предварительно отправив пользователю соответствующее сообщение (рисунок 3.28).


Рисунок 3.28 – Сообщение, выводимое при бесконечном цикле

Таким образом, если ли в программе возникает бесконечный цикл, браузер может, в конце концов, зависнуть, а если не предпринимать определенных мер, то зависнет и Web-сервер. Это означает, что необходимо позаботиться о том, чтобы бесконечные циклы не возникали [4].

Оператор do while работает аналогично while, за исключением того, что условие проверяется в конце цикла, а не в начале. В этом заключается важное отличие оператора do while: код в фигурных скобках выполняется, по крайней мере, один раз, даже если условие ложно.

Ниже представлен пример использования оператора do while для проверки вводимого числа пользователя на предмет того, является ли оно простым. При этом простым является число, которое делится без остатка только на себя и на единицу [4].

HTML-код программы проверки вводимого числа представлен ниже.

<HTML>
<HEAD>
<TITLE>Пример использования цикла do while</TITLE>
</HEAD>
<BODY>
<?php
if (isset($_POST['posted']))
{ $count=2;
do { $remainder = $_POST['guess'] % $count;
$count = $count + 1; }
while ($remainder != 0 and $count < $_POST['guess']);
if (($count < $_POST['guess']) || ($_POST['guess'] == 0))
{echo "<B>Введенное число не является простым.<B><HR>";}
else { echo "<B>Введенное число является простым.</B>HR>";} }
?>
<FORM method="POST" action="example.php">
<INPUT type="hidden" name="posted" value="true">
Введите число:
<INPUT name="guess" type="text"><BR><BR>
<INPUT type="submit" value="Проверить число">
<BR>
</FORM>
</BODY>
</HTML>

Реализация данного кода представлена на рисунке 3.29.


Рисунок 3.29 – Проверка простоты числа

Таким образом, как видно на рисунке 3.29, в данном примере, при загрузке Web-страницы, на экране появляется форма для ввода числа пользователя. После нажатия кнопки “Проверить число” программа проверяет, является ли это чело простым и выводит соответствующее сообщение. В данном примере пользователь ввел число четыре, которое не является простым, о чем пользователю было выведено соответствующее сообщение.

Оператор for также используется в языке PHP для обработки данных пользователя из форм.

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

HTML-код программы для ввода информации о детях пользователя представлен ниже.

<HTML>
<HEAD>
<TITLE>Пример использования цикла for</TITLE>
</HEAD>
<BODY>
<?php
if(isset($_POST['posted']))
{ echo "<form method='POST' action='dynamic.php'>";
for ($counter = 0; $counter < $_POST['number']; $counter++)
{ $offset = $counter + 1;
echo "<br>Введите имя $offset-гo ребенка<br>";
echo "<input name='child[]' type='text'>";}
echo "<br>Для продолжения нажмите кнопку<<br>";
echo "<input type='submit' value='Далее'>";
echo "<input type='hidden' name='posted01' value='true'></FORM>";}
else { if (isset($_POST['posted01']))
{ $count=0;
echo "<B>Имена Ваших детей: </B>";
do { $childs_name=$_POST['child'][$count];
echo"<br>$childs_name";
$checkempty = $childs_name;
$count = $count + 1; }
while ($checkempty != "");
if ($count == 1)
{ echo "Введите другое число"; } }
?>
<HR>
<FORM method="POST" action="examlpe.php">
<INPUT type="hidden" name="posted" value="true">
Сколько у Вас детей?
<INPUT name="number" type="text"><BR><BR>
<INPUT type="submit" value="Отправить число"><BR>
</FORM>
<?php } ?>
</BODY>
</HTML>

Результат работы данного примера представлен на рисунках 3.30, 3.31, 3.32.


Рисунок 3.30 – Форма ввода количества детей

Рисунок 3.31 – Динамическая форма ввода имён детей

Рисунок 3.32 – Результат ввод имён детей

Таким образом, как видно на рисунке 3.30, в данном примере при загрузке Web-страницы появляется форма, в которую пользователю требуется ввести число детей. После нажатия кнопки “Отправить число” данное число передается сценарию. Программа, таким образом, сообщает браузеру, что необходимо создать форму, состоящую из того количества полей, которые указал пользователь.

После этого на экране отображается несколько текстовых полей, количество которых соответствует значению, указанному пользователем. В каждое из этих полей пользователю необходимо ввести имя очередного ребенка и нажать кнопку “Далее” (рисунок 3.31). Однако если у пользователя нет детей, то отображаться текстовые поля не будут. В результате программа выводит имена детей на экран (рисунок 3.32).

Как видно из рисунков 3.30 - 3.32, пользователь ввел количество детей, равное трем. После этого, на следующей странице появилось три текстовых поля, в которые пользователь ввел имена детей: “Василий”, “Петр”, “Александр”. На третьей странице на экран выводятся эти имена детей.

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

Наверх