Передача параметров PHP скриптам с помощью HTML формы

В этой статье рассмотрим, как обрабатывать параметры, переданные нашему PHP скрипту от HTML форм.Создадим HTML-документ с формой, использующей все типы полей. А затем напишем сценарий, который будет обрабатывать переданные параметры.Пример кода:

Форма данныхТекстовое поле txt
Поле ввода пароля pswd
Скрытое поле hid
Вариант 1 (по умолчанию)Вариант 2МужчинаЖенщинаТекст по умолчанию Список без возможности множественного выбора:
ЯнварьФевральМартАпрельМайИюньИюльАвгустСентябрьОктябрьНоябрьДекабрь
Список с возможностью множественного выбора:
ЯнварьФевральМартАпрельМайИюньИюльАвгустСентябрьОктябрьНоябрьДекабрь

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

1. txt – значение текстового поля;

2. pswd – значение поля ввода пароля;
3. hid – значение скрытого поля;
4. параметры var1 и var2 будут переданы только, если соответствующие им переключатели активны (может быть передано одно из значений, обы значения или же ни одно из значений);
5. pol – значение группы зависимых переключателей (будет передано одно из значений – male или female);
6. t_area – содержимое текстовой области
7. month – значение обыкновенного списка
8. month[] – значение множественного списка

Теперь нам нужно разобраться, как обработать все эти параметры. Параметры txt, pswd, hid и t_area обрабатываются легко. Интерпретатор создает для каждого параметра переменную с соответствующим именем. Например, для отображения значения параметра txt достаточно написать:

echo «$txt»;

С параметрами var1 и var2 дело обстоит несколько сложнее. Если переключатель не активен, то параметры вообще не будут переданы на сервер, как будто бы вообще их и не было. Следовательно, не будет создана глобальная переменная и при попытке обращения к такой переменной, мы получим сообщение о том, что переменная не существует. Поэтому просто написать echo $var1; мы не можем: нужно предварительно проверить, существует ли переменная:

if (isset($var1)) echo «var1: $var1»;
if (isset($var2)) echo «var2: $var2»;

Только после проверки существования можно начинать работу с переменной.

Параметр pol, то есть наш зависимый переключатель, обрабатывается легко — браузер передает только одно из значений. Другими словами, параметр pol будет равен или male, или female. Поэтому можно просто вывести значение этого параметра: echo $pol;

Точно также обрабатывается параметр $month — это обыкновенный список без возможности множественного выбора, поэтому по сути его можно представить, как набор из 12 зависимых переключателей.

Сложнее всего обработать список с множественным выбором. Ведь в этом случае параметры передаются так:

name=value1&name=value2&name=value3…

При стандартном подходе переменная $name будет содержать только последнее значение (valueN). Однако разработчики PHP позаботились об этом: множественный список можно представить в виде массива, а обработать его элементы можно с помощью цикла foreach. Нам даже не нужно знать количество переданных элементов списка. Предварительно лишь нужно сообщить PHP, что мы будем передавать массив:

Квадратные скобки — это признак массива. Обрабатывается массив так:

foreach($month2 as $key=>$value)
echo «$key = $value
«;

Окончательный листинг сценария form.php представлен ниже:

Предположим, что в текстовое поле txt мы ввели имя Denis, в поле пароля — my_password, выбрали только вариант 2, установили параметр pol в значении male, заполнили текстовую область, в первом списке выбрали Январь, а во втором — первые три месяца. В результате мы получим такой вывод PHP сценария:

Вывод сценария в особых комментариях не нуждается, кроме трансляции списков. Как вы видите, передается не строка (Январь), а заданное значение value (01). Если не указывать значение value, то значением параметра станет строка, заключенная в тег option. Также обратите внимание на трансляцию множественного списка: выводится номер элемента (0, 1, 2) и значения (01, 02, 03) элементов массива.