Учебное пособие: Web-программирование. Обработка HTML-форм
Сначала рассмотрим наиболее простой способ передачи параметров сценарию — непосредственный набор их в URL после знака? — например, в формате l ogin=имя&password=napoль .
Пусть на сервере в корневом каталоге есть сценарий на РНР под названием hello.php . Этот сценарий распознает 2 параметра: login и password .
Поэтому, если задать в адресной строке браузера:
http://localhost/heIlo.php?login=root&password=Z10N0101
то должны получить требуемый результат.
Задача поставлена, можно приступать к ее решению. Но прежде полезно решить аналогичную, но более простую задачу.
Как же нам в сценарии получить строку параметров, переданную после знака вопроса в URL при обращении к сценарию? Для этого можно проанализировать переменную окружения QUERY_STRING , которая в РНР доступна под именем $_SERVER[QUERY_STRING] .
Напишем пример, чтобы это проиллюстрировать (листинг qs.php ).
Листинг qs.php. Вывод параметров командной строки.
<?php
echo «Данные из командной строки: $_SERVER[QUERY_STRING]»;
?>
Если теперь запустить этот сценарий из браузера (перед этим сохранив его в файле test.php в корневом каталоге сервера) таким образом:
http://localhost/qs.php?this+is+the+world/
то получим документ следующего содержания: Данные из командной строки: this+is+the+world
Обратите внимание на то, что URL -декодирование символов не произошло: строка $_server [' query_string '] , как и одноименная переменная окружения, всегда приходит в той же самой форме, в какой она была послана браузером.
Так как РНР изначально создавался именно как язык для Web-программирования, то он дополнительно проводит некоторую работу с переменной query_string перед передачей управления сценарию. А именно, он разбивает ее по пробельным символам (в примере пробелов нет, их заменяют символы + , но эти символы РНР также понимает правильно) и помещает полученные кусочки в массив-список $argv , который впоследствии может быть проанализирован в программе.
Массив $argv используется при программировании на РНР крайне редко, что связано с большими возможностями интерпретатора по разбору данных, поступивших от пользователя. Однако в некоторых (учебных) ситуациях его применение оправдано.
2.1. Форма для передачи данных
Вернемся к поставленной задаче. Как сделать, чтобы пользователь мог в удобной форме ввести зарегистрированное имя и пароль? Очевидно, придется создать что-нибудь типа диалогового окна Windows, только в браузере. Для этого понадобится HTML -документ (например, form.html в корневом каталоге) с элементами этого диалога — текстовыми полями — и кнопкой.
Листинг form.html. Страница с формой
<html>
<body>
<form action=hello.php>
Имя : <input type=text name=”login” value=””<br>
Пароль : <input type=password name=”password” value=””<br>
<input type=”submit” name=”go” v а 1ue = “ Передать “ ><br>
<input type=”reset” v а 1ue = “ Очистить форму ” ><br>
</form>