Test Form PHP.SU

Html передать параметр серверу

Способы передачи параметров сценарию

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

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

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

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

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

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

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

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

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

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

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

  Введите имя:  
Введите возраст:

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

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

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

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

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

Источник

Передача параметров с помощью HTML-форм

Сначала напишем HTML-документ, который будет содержать практически все элементы HTML-формю Параметры формы мы будем передавать скрипту для последующией обработки. Итак, листинг HTML-документа send.html:



Тестовая форма

Текстовое поле:

Поле ввода пароля:

Скрытое поле hidden


Независимые переключатели (checkbox):

Вариант первый

Вариант второй

Вариант третий (по умолчанию)


Зависимые переключатели (radio):

Да

Нет


Многострочное текстовое поле (textarea):


Список с единственным выбором:

Список с множественным выбором (multiple):


    

© 2005 PHP.SU


В окне браузера данная форма будет выглядеть так

Когда пользователь нажимает кнопку “Отослать форму”, браузер передаст скрипту следующие параметры:

  • textfield – значение текстового поля;
  • pswfield – значение поля ввода пароля;
  • hidden – значение скрытого поля;
  • параметры checkbox: checkbox1, checkbox2 и checkbox3 будут переданы только в том случае, если соответствующие им независимые переключатели активны;
  • radiobutton – значение группы radio (будет передано одно из значений: Yes или No);
  • textarea – содержимое многострочной текстовой области;
  • day_s – значение списка с единственным выбором;
  • day_m – значения списка с множественным выбором.

Теперь перед нами стоит задача обработки всех параметров переданной формы с помощью PHP скрипта.

Параметры textfield, pswfield и textarea обрабатываются достаточно просто. Например, для отображения значения параметра textfield достаточно написать в обрабатывающем скрипте:

С параметрами checkbox1, checkbox2, checkbox3, и radiobutton дело обстоит несколько сложнее. Если переключатель не активен, то перечисленные параметры вообще не будут переданы на сервер, как будто их вообще не было. Следовательно, при попытке обратиться в скрипте к этим параметрам, мы получим сообщение, что переменная не существует. Поэтому просто написать echo $_POST[‘checkbox1’]; мы не можем, нам необходимо сначала проверить существование этих параметров в запросе. Проверка существования параметра осуществляется с помощью функции isset(), которая служит для проверки существования переменных.

if (isset($_POST[‘checkbox1’])) echo $_POST[‘checkbox1’];
if (isset($_POST[‘radiobutton’])) echo $_POST[‘radiobutton’];

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

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

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

Квадратные скобки []- это признак массива. Циклическая обработка массива осуществляется так:

foreach ($_POST[‘day_m’] as $key=>$value) echo «$key = $value
«;

А теперь приведем окончательный листинг PHP скрипта, обрабатывающего нашу тестовую форму:

Источник

Отправка данных формы

Сама форма обычно предназначена для получения от пользователя информации для дальнейшей пересылки её на сервер, где данные формы принимает программа-обработчик. Такая программа может быть написана на любом серверном языке программирования вроде PHP, Perl и др. Адрес программы указывается в атрибуте action тега , как показано в примере 1.

Пример 1. Отправка данных формы

В этом примере данные формы, обозначенные атрибутом name ( login и password ), будут переданы в файл по адресу /example/handler.php. Если атрибут action не указывать, то передача происходит на адрес текущей страницы.

Передача на сервер происходит двумя разными методами: GET и POST, для задания метода в теге используется атрибут method , а его значениями выступают ключевые слова get и post . Если атрибут method не задан, то по умолчанию данные отправляются на сервер методом GET. В табл. 1 показаны различия между этими методами.

Табл. 1. Различия между методами GET и POST

GET POST
Ограничение на объём4 КбОграничения задаются сервером.
Передаваемые данныеВидны сразу всем.Видны только при просмотре через расширения браузера или другими методами.
КэшированиеСтраницы с разными запросами считаются различными, их можно кэшировать как отдельные документы.Страница всегда одна.
ЗакладкиСтраницу с запросом можно добавить в закладки браузера и обратиться к ней позже.Страницы с разными запросами имеют один адрес, запрос повторить нельзя.

Какой метод используется легко определить по адресной строке браузера. Если в ней появился вопросительный знак и адрес стал похож на этот, то это точно GET.

Уникальное сочетание параметров в адресной строке однозначно идентифицирует страницу, так что страницы с адресами ?q=node/add и ?q=node считаются разными. Эту особенность используют системы управления контентом (CMS, Content management system) для создания множества страниц сайта. В реальности же используется один файл, который получает запрос GET и согласно ему формирует содержимое документа.

Ниже перечислены типовые области применения этих методов на сайтах.

GET

Передача небольших текстовых данных на сервер; поиск по сайту.

Поисковые системы, формы поиска по сайту всегда отправляются методом GET, это позволяет делиться результатами поиска с друзьями, слать ссылку по почте или выкладывать её на форуме.

POST

Пересылка файлов (фотографий, архивов, программ и др.); отправка комментариев; добавление и редактирование сообщений на форуме, блоге.

Работа с формой по умолчанию происходит в текущей вкладке браузера, при этом допустимо при отправке формы изменить этот параметр и открывать обработчик формы в новой вкладке или во фрейме. Такое поведение задаётся через «имя контекста», которое выступает значением атрибута target тега . Популярные значения это _blank для открытия формы в новом окне или вкладке, и имя фрейма, которое задаётся атрибутом name тега (пример 2).

Пример 2. Открытие формы во фрейме

В данном примере при нажатии на кнопку «Отправить» результат отправки формы открывается во фрейме с именем area .

Элементы формы традиционно располагаются внутри тега , тем самым определяя те данные, которые будут передаваться на сервер. В то же время в HTML5 есть возможность отделить форму от её элементов. Это сделано для удобства и универсальности, так, сложный макет может содержать несколько форм, которые не должны пересекаться меж собой или к примеру, некоторые элементы выводятся с помощью скриптов в одном месте страницы, а сама форма находится в другом. Связь между формой и её элементами происходит в таком случае через идентификатор формы, а к элементам следует добавить атрибут form со значением, равным этому идентификатору (пример 3).

Пример 3. Связывание формы с полями

В этом примере тег однозначно отождествляется через идентификатор auth , а к полям, которые следует отправить с помощью формы, добавляется form=»auth» . При этом поведение элементов не меняется, при нажатии на кнопку логин и пароль пересылаются на обработчик handler.php.

Хотя параметры передачи формы традиционно указываются в теге , их можно перенести и в кнопки отправки формы ( и ). Для этого применяется набор атрибутов formaction , formmethod , formenctype и formtarget , которые являются аналогами соответствующих атрибутов без приставки form. В примере 4 показано использование этих атрибутов.

Все новые атрибуты форм не поддерживаются некоторыми браузерами, в частности, Internet Explorer и Safari.

Источник

Читайте также:  Getting request url in php
Оцените статью