Найпростіша форма надсилання даних на пошту за допомогою HTML та PHP. HTML-форми. Методи надсилання даних на сервер за допомогою форми

/php/php5ru.png HTTP/1.0

: www.php5.ru

По екрану пробіжить те, що ви побачили, якби переглянули цей png-файл у текстовому редакторі

HTML-форми. Методи надсилання даних на сервер за допомогою форми

Одна з найпоширеніших програм будь-якої мови створення серверних сценаріїв - обробка HTML- Форм. Web-програмування здебільшого є обробкою різних даних, введених користувачем.

РНРполегшує завдання обробки та розбору форм, що надійшли з браузера, так як у мову на нижньому рівні вбудовані всі необхідні можливості. Тому програмісту не доводиться навіть замислюватися над особливостями протоколу. HTTPі розмірковувати, як же відбувається відправлення та прийом

З HTML-формами Ви вже зустрічалися щодо мови розмітки HTML.

Розглянемо приклад посилки повідомлення з форми електронною поштою.

Лістинг e_mail.html.Надсилання повідомлення з форми на e-mail

Посилання форми по е-mail

Натисніть "Скинути" та заповніть замовлення.


Якщо обробити цей HTML-код браузером, відобразиться web-сторінка, яку можна побачити на екрані монітора:

Користувач натискає кнопку «Скидання», та поля приймають значення, встановлені за замовчуванням. Форма заповнюється користувачем, і після натискання кнопки «Надіслати замовлення»надсилається за адресою Ця електронна адреса захищена від спам-ботів. Щоб побачити її потрібно активувати java-script. Зазвичай браузер не сам надсилає форму, а доручає цю роботу поштовій програмі, яка встановлена ​​за замовчуванням в операційній системі комп'ютера (наприклад, Outlook). Лист надсилається у вигляді:

subjct: Форму надіслано з Microsoft Internet Explorer

name = Прохоров Віктор Сергійович

value= Ця електронна адреса захищена від спам-ботів. Щоб побачити її потрібно активувати java-script.

obj = «Методичні вказівки»

Лист складається з пар ім'я = значенняякі вибираються по порядку з полів форми.

Розглянемо докладніше наступний приклад.

Лістинг form_1.html

Введіть ваше ім'я:

Зберігши цей код у HTML-файлі form_1.htmlта переглянувши його за допомогою браузера, можна побачити HTML-форму:

Форма реалізована тегом-контейнером . Тег своїми атрибутами вказує:

Адреса сценарію, якому буде надіслано форму;

Спосіб пересилання та характеристику даних, що містяться у формі. Початковий та кінцевий теги задають межі форми. Їхня вказівка ​​є обов'язковою.

Атрибути тега-контейнера
(
всі необов'язкові):

? action--атрибут, значення якого вказують URL-адреса (повна або відносна) запитуваної CGI-програми. Ця програма оброблятиме дані, що містяться у формі. Допустимо використовувати запис MAILTO: URL.У цьому випадку форма буде надіслана електронною поштою. Якщо атрибут actionне вказати, то вміст форми буде надіслано на URL-адреса, з якої завантажена дана web-сторінка, тобто "сама на себе". Це зручне скорочення, але за стандартом HTML атрибут actionобов'язковий.

? метод-- визначає метод HTTP, що використовується для передачі даних форми від браузера до сервера. Атрибут методможе приймати два значення: getабо post:

¦ get- Надсилання даних форми в адресному рядку. Ви могли побачити на різних сайтах присутність в кінці URL символу "?" та наступних за ним даних у форматі параметр = значення.Тут "параметр"відповідає значенню атрибуту nameелементів форми (див. нижче про тег ), а "значення"- вміст атрибуту value(у ньому, наприклад, міститься введення користувача в текстове поле того ж таки тега ).

Для прикладу – спробуйте пошукати що-небудь в Яндексі та зверніть увагу на адресний рядок браузера. Це і є спосіб get.

¦ post- Дані форми відправляються в тілі запиту. Якщо не зовсім зрозуміло (або зовсім незрозуміло), що це таке – не турбуйтесь, скоро ми до цього питання повернемося.

Якщо атрибут методне вказано - мається на увазі "get".

? enctype- Необов'язковий атрибут. Вказує тип вмісту форми, який використовується для визначення формату кодування під час її пересилання. У HTMLвизначено два можливі значення для атрибуту enctype:

¦ APPLICATION/X-WWW-FORM-URLENCODED(використовується за замовчуванням).

¦ MULTIPART/FORM-DATA.

Тег дозволяє створювати всередині форми поля введення рядка тексту, імені файлу, пароля та ін. немає кінцевого тегу. Атрибути та особливості використання залежить від методу його використання.

Тег - задає елемент форми, що визначається атрибутом type:

Значення "text"дає однорядкове текстове поле введення.

Значення "submit"задає кнопку, при натисканні якої відбувається надсилання форми на сервер.

Можливі й інші значення (та й - не єдиний тег, що задає елемент форми), але їх ми розглянемо у наступних розділах.

Отже, що відбувається, коли натискають кнопку "OK"?

1. Браузер переглядає вхідні у форму елементи і формує їх атрибутів nameі valueдані форми. Допустимо, введено ім'я Vasya. В цьому випадку дані форми: name=Vasya&okbutton=OK.

2. Браузер встановлює з'єднання із сервером, надсилає на сервер запит документа, вказаного в атрибуті actionтега , використовуючи метод відправлення даних, вказаний в атрибуті метод(в даному випадку - GET), передаючи у запиті дані форми.

3. Сервер аналізує отриманий запит, формує відповідь, відправляє його браузеру та закриває з'єднання.

4. Браузер відображає отриманий документ від сервера.

Надсилання того ж запиту вручну (з допомогою telnet) виглядає наступним чином (припустимо, що доменне ім'я сайту - www.example.com).

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

Приклад 1. Надсилання даних форми

HTML5 IE Cr Op Sa Fx

Дані форми



У цьому прикладі дані форми, позначені атрибутом name (login і password), будуть передані у файл за адресою /example/handler.php. Якщо атрибут action не вказувати, передача відбувається на адресу поточної сторінки.

Передача на сервер відбувається двома різними методами: GET і POST для завдання методу в тезі
використовується атрибут method, яке значеннями виступають ключові слова get і post. Якщо атрибут метод не заданий, то за умовчанням дані відправляються на сервер методом GET. У табл. 1 показано різницю між цими методами.

Який метод використовується легко визначити за адресним рядком браузера. Якщо в ній з'явився знак питання і адреса стала схожою на цю, то це точно GET.

http://www.google.ru/search?q=%D1%81%D0%B8%D1%81%D1%8C%D0%BA%D0%B8&ie=utf-8

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

Нижче наведено типові області застосування цих методів на сайтах.

GET

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

Пошукові системи, форми пошуку по сайту завжди відправляються методом GET, це дозволяє ділитися результатами пошуку з друзями, надсилати посилання поштою або викладати його на форумі.

POST

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

Робота з формою за промовчанням відбувається в поточній вкладці браузера, при цьому допустимо при відправленні форми змінити цей параметр і відкривати обробник форми у новій вкладці або у кадрі. Така поведінка задається через «ім'я контексту», яке є значенням атрибуту target тега . Популярні значення це _blank для відкриття форми в новому вікні або вкладці та ім'я кадру, яке задається атрибутом name тега



У цьому прикладі при натисканні на кнопку «Надіслати» результат відправки форми відкривається у кадрі з ім'ям area .

Елементи форми зазвичай розташовуються всередині тега
, тим самим визначаючи дані, які будуть передаватися на сервер. Водночас у HTML5 є можливість відокремити форму від її елементів. Це зроблено для зручності та універсальності, так, складний макет може містити кілька форм, які не повинні перетинатися між собою або, наприклад, деякі елементи виводяться за допомогою скриптів в одному місці сторінки, а сама форма знаходиться в іншому. Зв'язок між формою та її елементами відбувається у такому разі через ідентифікатор форми, а до елементів слід додати атрибут form зі значенням, що дорівнює цьому ідентифікатору (приклад 3).

Приклад 3. Зв'язування форми з полями

HTML5 IE Cr Op Sa Fx

Форма



У цьому прикладі тег
однозначно ототожнюється через ідентифікатор auth , а полям, які слід відправити за допомогою форми, додається form="auth" . При цьому поведінка елементів не змінюється, при натисканні на кнопку логін та пароль пересилаються на обробник handler.php.

Хоча параметри передачі форми традиційно вказуються в тезі , їх можна перенести і в кнопки відправлення форми (

Ваше ім'я: Ваша адреса: Надіслати: