Работа с HTML формами

Аватара пользователя
SLITE
Сообщения: 203
Зарегистрирован: 01 янв 2010
Способы передачи параметров сценарию

Наиболее распространенными методами передачи данных между браузером и сценарием являются GET и POST. Однако вручную задавать строки параметров для сценариев и к тому же URL-кодировать их, согласитесь, довольно утомительно. Давайте посмотрим, что предлагает нам для облегчения жизни HTML.

Мы будем рассматривать метод GET для передачи запросов серверу.

Даже программисту утомительно набирать параметры в URL вручную. Различные ?, &, %... Представьте себе пользователя, которому необходимо это делать... К счастью, существуют удобные возможности языка HTML, которые, конечно, поддерживаются браузерами.
Итак, пусть у нас на сервере в корневом каталоге размещен файл сценария script.php. Этот сценарий распознает 2 параметра: name и age. Где эти параметры задаются, мы пока не решили. При переходе по адресу http://site/script.php он должен отработать и вывести следующую HTML-страницу:

Код: Выделить всё

<html><body>
Привет, name! Вам age лет!
</body></html>


Разумеется, при генерации страницы нужно name и age заменить на соответствующие значения, переданные в параметрах.

Передача параметров через адресную строку браузера

Давайте попробуем включать параметры прямо в URL, в строку параметров. Таким образом, если запустить в браузере http://site/script.cgi?name=Vasya&age=20 мы получим страницу с нужным результатом:

Код: Выделить всё

<html><body>
Привет, Vasya! Я знаю, Вам 20 лет!
</body></html>

Обратите внимание, что мы разделяем параметры символом &, а также используем знак равенства =. Чуть нуже мы поясним, что это значит.

Использование HTML-форм

Как теперь нам сделать, чтобы пользователь мог в удобной форме ввести свое имя и возраст? Очевидно, нам необходимо интерактивное окно, в которое осуществляется ввод наших параметров, причем через браузер.

Итак, нам понадобится обычный HTML-документ (например, с именем form.html и расположенный в корневом каталоге) с элементами диалога — полями ввода текста и кнопкой, при нажатии на которую запустится скрипт script.php. Текст документа form.html:

Код: Выделить всё

<html><body>
<form action="script.php">
Введите имя: <input type=text name="name"><br>
Введите возраст: <input type=text name="age"><br>
<input type=submit value="GO!">
</form>
</body></html>

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

Как мы знаем, все перекодирования и преобразования, которые нужны для URL-кодирования данных, осуществляются браузером автоматически.

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

Осталось теперь только определиться, как мы можем извлечь $name и $age из строки параметров и обработать их.

Далее мы рассмотрим, каким же образом PHP скрипт принимает параметры запроса и обрабатывает их.

Источник:php.su
Последний раз редактировалось SLITE 27 мар 2010, 16:02, всего редактировалось 1 раз.

Аватара пользователя
SLITE
Сообщения: 203
Зарегистрирован: 01 янв 2010
Обработка параметров запросов

Веб-программирование в большей части представляет собой как раз обработку различных данных, введенных пользователем — т. е., обработку HTML-форм.
Пожалуй, нет другого такого языка, как PHP, который бы настолько облегчил вам задачу обработки и разбора внешних переменных, т.е. переменных, которые поступили из HTML-форм (из браузера пользователя). Дело в том, что в язык PHP встроены все необходимые возможности, так что вам не придется даже и задумываться над особенностями протокола HTTP и размышлять, как же происходит отправка и прием POST-форм или даже загрузка файлов.Разработчики PHP все предусмотрели.

А теперь попробуем написать сценарий, который принимает в параметрах имя пользователя и его возраст и выводит:

Код: Выделить всё

"Привет, <имя>! Вам <возраст> лет!"


То есть нам нужно передать в скрипт 2 параметра: name и age.

Теперь мы напишем скрипт script.php, принимающий два параметра: name и age, а также HTML-документ с формой, которая эти два параметра будет передавать в наш новый скрипт:

Код: Выделить всё

<?php
echo "Привет, $_GET['name'] ! Вам $_GET['age'] лет !";
?>


А вот и HTML-документ send.html, с помощью которого мы параметры name и age передадим нашему скрипту:

Код: Выделить всё

<html><body>
<form action="script.php">
Введите имя: <input type=text name="name"><br>
Введите возраст: <input type=text name="age"><br>
<input type=submit value="GO!">
</form>
</body></html>


Теперь наш скрипт принимает два параметра name и age и выводит в браузер результат формата: "Привет, <имя>! Вам <возраст> лет!".

Обратите внимание на адресную строку браузера после передачи параметров сценарию, она будет выглядить примерно следующим образом (без URL-кодирования кириллицы):

http://localhost/script.php?name=Саша&age=23

В зависимости от установок вашего интерпретатора, существует несколько способов доступа к данным из ваших HTML-форм. Вот несколько примеров:

Код: Выделить всё

<?php
// Доступно, начиная с PHP 4.1.0

echo $_GET['username'];
echo 
$_POST['username'];
echo 
$_REQUEST['username'];

import_request_variables('p''p_');
echo 
$p_username;

// Доступно, начиная с PHP 3. Начиная с PHP 5.0.0, эти длинные предопределенные
// переменные могут быть отключены директивой register_long_arrays.

echo $HTTP_GET_VARS['username'];

// Доступно, если директива PHP register_globals = on. Начиная
// с PHP 4.2.0, значение по умолчанию register_globals = off.
// Использование/доверие этому методу непредпочтительно.

echo $username;
?>


Вернуться в «PHP»