Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка PHP 2008.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

Тема 3 Работа с данными формы

3.1 Передача данных

3.2 Трансляция полей формы в переменные

3.1 Передача данных

Web-программирование в большей части (или хотя бы наполовину) представляет собой обработку различных данных, введенных пользователем – т. е., обработку форм.

Передача данных командной строкой. Напишем сценарий, который принимает в параметрах Имя и возраст пользователя и выводит: "Привет, <имя>! Я знаю, вам <возраст> лет!".

Рассмотрим способ передачи имени и возраста сценарию – непосредственный набор их в URL после знака ? – например, в формате

http://www.script.php?name=имя&age=возраст

Пусть на сервере в корневом каталоге есть сценарий на РНР под названием hello.php. Наш сценарий распознает 2 параметра: name и аgе. Он должен отработать и вывести следующую HTML-страницу:

<html>

<body>

Привет, name! Я знаю, Вам age лет!

</body>

</html>

Нужно name и age заменить на соответствующие значения. Таким образом, если задать в адресной строке браузера

http://www.somehost.com/script.php?name=Vasya&age=20

мы должны получить страницу с требуемым результатом.

Чтобы в сценарии получить строку параметров, переданную после знака вопроса в URL при обращении к сценарию, можно проанализировать переменную окружения QUERY_STRING, которая в РНР доступна под именем $QUERY_STRING.

<html>

<body>

<?

print "Данные из командной строки: $QUERY_STRING";

?>

</body>

</html>

Если теперь мы запустим этот сценарий из браузера (перед этим сохранив его в файле test.php в корневом каталоге сервера) примерно следующим образом:

http://www.myhost.com/test.php?aaa+bbb+ccc+ddd

то получим документ следующего содержания:

Данные из командной строки: aaa+bbb+ccc+ddd

Обратите внимание на то, что URL-декодирование символов не произошло: строка $QUERY_STRING, как и одноименная переменная окружения, всегда приходит в той же самой форме, в какой она была послана браузером.

Так как РНР изначально создавался именно как язык для Web-программирования, то он дополнительно проводит некоторую работу с переменной $QUERY_STRING перед тем, как управление будет передано сценарию, а именно, он разбивает ее по пробельным символам (в нашем примере пробелов нет, их заменяют символы +, но эти символы РНР также понимает правильно) и помещает полученные кусочки в массив-список $argv, который впоследствии может быть проанализирован в программе.

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

Формы. Для того, чтобы пользователь мог в удобной форме ввести свое имя и возраст, нужно создать обычный HTML-документ (например, form.html) с элементами этого диалога – текстовыми полями – и кнопкой, т.е. форму:

<html>

<form action=hello.php>

Введите имя:

<input type=text name="name" value="Елена"><br>

Ваш возраст:

<input type=text name="age" value="5"><br>

<input type=submit value="Отправить">

</form>

</body>

</html>

Загрузим наш документ в браузер. Теперь, если ввести в поле с именем свое имя, а в поле для возраста – свой возраст и нажать кнопку, браузер автоматически обратится к сценарию hello.php и передаст через ? все атрибуты, расположенные внутри тэгов <INPUT> в форме и разделенные символом & в строке параметров. Заметьте, что в атрибуте action тэга <form> мы задали относительный путь, т.е. сценарий hello.php будет искаться браузером в том же самом каталоге, что и файл form.html.

Все перекодирования и преобразования, которые нужны для URL-кодирования данных, осуществляются браузером автоматически. В частности, буквы кириллицы превратятся в %xx, где хх – шестнадцатеричное число, обозначающее код символа.

Листинг hello.php – модель простого РНР-сценария

<html>

<body>

<?

print "Привет, ".$_GET['name'].

". Вам ".$_GET['age']." лет.";

?>

</body>

</html>