Создание формы
Сейчас практически ни один сайт не обходится без элементов интерфейса вроде полей ввода текста, кнопок, переключателей и флажков. Они необходимы для взаимодействия с пользователем, чтобы он мог искать на сайте по ключевым словам, писать комментарии, отвечать на опросы, прикреплять фотографии и делать много других подобных вещей. Именно формы и обеспечивают получение данных от пользователя и передачу их на сервер, где они уже подвергаются анализу и обработке. Так что если вы планируете сделать нечто подобное на сайте, без форм не удастся это реализовать.
Сама форма создаётся с помощью тега , внутри которой могут быть любые необходимые теги, и характеризуется следующими необязательными параметрами:
- адрес программы на веб-сервере, которая будет обрабатывать содержимое данных формы;
- элементами формы, которые представляют собой стандартные поля для ввода информации пользователем;
- кнопку отправки данных на сервер.
Допускается использовать несколько форм на странице, но они не должны вкладываться одна в другую (пример 1).
Пример 1. Ошибочное использование форм
HTML5 IE Cr Op Sa Fx
Перед отправкой данных браузер подготавливает информацию в виде пары «имя=значение», где имя определяется атрибутом name тега или другим тегом допустимым в форме, а значение введено пользователем или установлено в поле формы по умолчанию. После нажатия пользователем кнопки Submit, происходит вызов обработчика формы, который получает введенную в форме информацию, а дальше делает с ней то, что предполагает разработчик. В качестве обработчика формы обычно выступает программа, заданная атрибутом action тега . Программа может быть написана на любом серверном языке вроде PHP, Python, C# и др.
Часто бывает, что текущая страница написанная, допустим, на PHP, сама является обработчиком формы, в таком случае можно указать пустое значение атрибута action или вообще его опустить. В простейшем случае тег не содержит никаких атрибутов и представлен в примере 2.
Пример 2. Простая форма
HTML5 IE Cr Op Sa Fx
Формы
В качестве значения атрибута action можно указать также адрес электронной почты, начиная его с ключевого слова mailto: . При отправке формы будет запущена почтовая программа, установленная по умолчанию. В целях безопасности в браузере задано, что отправить незаметно информацию, введенную в форме, по почте невозможно. Для корректной интерпретации данных используйте атрибут enctype со значением text/plain в теге (пример 3).
Пример 3. Отправка формы по почте
HTML5 IE Cr Op Sa Fx
Формы
Браузеры неоднозначно работают с таким кодом. Firefox предложит список подходящих приложений для отправки почты (рис. 1), Internet Explorer выведет предупреждение (рис. 2) и попытается запустить программу, сопоставленную с почтой, Opera подобно Firefox предложит список вариантов подходящих для отправки почты (рис. 3).

Рис. 1. Запуск приложения в Firefox

Рис. 2. Предупреждение Internet Explorer

Рис. 3. Выбор программы в Opera
Формы и поля в HTML. Все о HTML формах
В HTML для создания форм используются теги группы form. К ним относятся:
Каждому из этих тегов посвящена отдельная страница в нашем справочнике. Перейти на нее вы можете, нажав по названию тега.
На этой странице описана практика создания и работы с HTML формами с примером исходного кода и описанием на русском языке.
Создание формы в HTML
Для того чтобы создать простую HTML форму, нужно поместить в код страницы тег и разместить внутри него элементы формы.
Элементы формы (другое название — поля) формируются с помощью тегов группы form. Основные типы элементов описаны ниже на этой странице. Подробное описание всех типов полей форм находится на страницах тегов соответствующих элементов.
Для примера создадим форму обратной связи. Стандартная форма обратной связи HTML содержит следующие элементы: список выбора тематики, текстовые поля для ввода имени, контакта (например, email) и текстовую область для ввода сообщения.
Пример HTML формы обратной связи
HTML код формы обратной связи
Рассмотрим подробно код формы.
Существует 2 метода передачи данных формы на сервер: GET и POST. Используя метод GET, данные будут переданы в виде пар «имя-значение» в URL адресе обработчика. В случае использования метода POST данные передаются скрыто. Их можно увидеть только с помощью специальных инструментов, открыв HTTP запрос. Подробное описание методов GET и POST и о том, когда нужно использовать каждый из методов читайте в статье: Методы GET и POST: использование и отличия.
Атрибут action содержит URL обработчика формы — по этому адресу будет отправлена форма после наступления события submit (submit — событие отправки формы).
Каждый элемент cодержит атрибут name . При отправке формы, значения введенные пользователем будут переданы в переменных с именами указанными в этом атрибуте. Атрибут type определяет тип элемента . Атрибут required делает элемент обязательными для заполнения. Форма не будет отправлена, пока пользователь не заполнит все обязательные элементы.
Стилевое оформление формы
Для оформления формы обратной связи, приведенной выше, были использованы несколько стилей CSS. Оформление не влияет на работу формы, однако, если вы хотите чтобы ваша форма выглядела также как форма из примера, воспользуйтесь CSS правилами, приведенными ниже.
Код CSS для базового оформления HTML формы обратной связи из примера выше:
.guruweba_example_form width: 290px;
>
.guruweba_example_caption font-size: 24px;
text-align: center;
>
.guruweba_example_form .guruweba_example_infofield margin-top: 10px;
font-weight: bold;
>
.guruweba_example_form select, .guruweba_example_form input, .guruweba_example_form textarea width: 100%;
margin: 5px 0;
padding: 5px 15px;
>
Элементы (поля) формы html. Основные типы полей
В таблице ниже представлены основные типы элементов формы (полей). Подробную информацию о каждом элементе вы можете просмотреть на отдельной странице тега.
По умолчанию текстовое поле может принимать любые текстовые значение. Дополнительные ограничения могут быть установлены в теге (атрибут pattern), либо с помощью JavaScript.
Браузеры обычно отображают возле поля календарь, с помощью которого можно заполнить поле.
Существует несколько типов полей, содержащих данные о дате и времени:
- date — дата (число, месяц, год);
- datetime-local — дата и время (число, месяц, год, часы, минуты);
- month — месяц конкретного года (например: январь, 2004г);
- week — неделя конкретного года (например: неделя 32, 2001г).
Поле для ввода пароля:
В поле типа password введенное значение будет заменено символьной маской.
Поле для ввода чисел:
В поля из этой группы можно вводить только подходящее к типу поля содержимое.
Поля с указанным типом содержимого:
- email — поле для ввода адреса электронной почты;
- number — поле для ввода чисел;
- password — поле для ввода пароля;
- search — поле для ввода поискового запроса;
- tel — поле для ввода номера телефона;
- url — поле для ввода URL адреса.
Текстовая область может принимать в виде значения многострочный текст.
Принимаю условия
Чек-бокс представляет собой поле, в котором можно сделать отметку.
Самовывоз
Курьер
Экспресс-почта
Элемент «переключатель» позволяет выбрать один из доступных вариантов.
При клике на список пользователю откроются доступные для выбора варианты.
Пользователь может выбрать сразу несколько вариантов из этого списка.
С помощью этого элемента пользователь может прикрепить к форме файл.
Для создания кликабельной кнопки можно использовать тег либо тег .
Отличие в возможности формировать название кнопки, сделанной тегом , с помощью HTML тегов.
Типы кнопок (определяются атрибутом type):
- button — простая кнопка. Действие, которое будет выполнено при нажатии кнопки, определяется через JavaScript;
- submit — кнопка отправки формы;
- reset — кнопка очистки полей формы.
Обработка HTML формы на сервере
После отправки формы данные передаются на сервер в виде параметров запроса.
Дальнейшая обработка формы осуществляется с помощью программного кода обработчика, указанного в атрибуте action формы.
Для создания обработчика понадобится один из доступных языков программирования. Распространенным вариантом является использование PHP обработчиков.
В случае использования PHP обработчика данные формы будут доступны в суперглобальных массивах $_GET и $_POST . Например, данные поля с именем «message», отправленные методом POST, будут доступны как $_POST[‘message’] .
Работа с формами на сервере — это отдельная обширная тема. Об обработке HTML форм на сервере читайте в справочнике по выбранному языку программирования.
Ниже представлен простейший PHP обработчик для формы обратной связи, приведенной выше. Данный обработчик отправляет данные формы на указанный email.
Этот код необходимо разместить на сервере в корневом каталоге сайта в файле feedback.php (в файле, указанном как обработчик формы).
Код простого PHP обработчика формы обратной связи
// Простейший обработчик формы обратной связи by GuruWeba
// Разместите этот код в файле, который указан как обработчик формы
// Замените адреса email в переменных $to и $from ниже
// Внимание! Данный обработчик не содержит защиты от злоумышленников
if (isset($_POST['submit_btn'])) // Email на который будет отправлено письмо
$to = "example@mail.ru";
// Email от имени которого будет отправлено письмо.
// Введите email вашего сайта, либо, в крайнем случае,
// продублируйте email из $to (может не работать)
$from = "example@mail.ru";
$subject = "Новая заявка на сайте"; // Тема присылаемого письма
$message = "На сайте была заполнена форма обратной связи"."\r\n"
// Если вы изменяли поля формы, внесите изменения ниже
."Тема: ".$_POST['theme']."\r\n"
."Ваше имя: ".$_POST['name']."\r\n"
."Ваш email: ".$_POST['email']."\r\n"
."Сообщение: ".$_POST['message']."\r\n";
$headers = "From: ".$from."\r\nContent-type: text/html; charset=utf-8\r\n";
mail($to, $subject, $message, $headers);
>
?>
#13 – Создание HTML форм и полей для ввода

HTML содержит множество тегов для построения всевозможных веб-форм. За урок мы научимся создавать формы, прописывать внутри них различные поля и добавлять к этому всему атрибуты.
Видеоурок
Для создания формы обратной связи или же формы комментариев необходимо использовать тег «form» и теги «input». Сперва поля выглядят одинаково, но при добавлении стилей вы сможете преобразить их на свое усмотрение.
Ключевым тегом для создания полей является тег input , который не требует закрывающего тега и выглядит следующим образом:
Для создания разного типа полей необходимо менять значение атрибута «type». Значений для атрибута существует масса и большинство из значений описаны в нашем справочнике здесь .
Создание формы
Тег input не создает форму. Для создания формы или же объединения нескольких «input-тов» необходимо прописать тег form . О нём можно почитать в нашем справочнике здесь .
Для описания полей существует специальный тег label . Он отвечает за надписи к конкретному полю. Также вы можете поместить небольшую надпись в само текстовое поле при помощи атрибута placeholder .
Весь код будет доступен после подписки на проект!
HTML формы
HTML формы можно использовать для отсылки данных через Интернет и часто используются для организации обратной связи с пользователями.
Сами по себе формы совершенно бесполезны. Они должны быть всегда связаны с программами или скриптами, которые будут обрабатывать введенные пользователем данные. Однако этот вопрос лежит за пределами темы данного учебника.
Основные теги, используемые для создания HTML форм, — это тег , тег , тег , тег и тег .
Необязательный атрибут method указывает на то, каким образом должны отсылаться данные формы. Он может принимать два значения – get (значение по умолчанию) и post. При последнем значении данные во время отсылки скрываются (при значении get данные формы прикрепляются к URL).
Таким образом, элемент формы будет иметь приблизительно следующий вид:
- type=»text» /> — стандартное текстовое поле. Также здесь может присутствовать атрибут value, который определяет текст по умолчанию, заданный в текстовом поле.
- type=»password» /> — то же текстовое поле, однако вводимые пользователем символы будут скрыты.
- type=»checkbox» /> — создает поле выключателей (checkbox) или флажков, которые пользователь может либо включить, либо отключить. Также здесь можно использовать атрибут checked, который используется в формате и который задает начальное состояние флажка «включен».
- type=»radio» /> — создает поле переключателей, которые очень похожи на флажки, однако в этом случае пользователь может выбрать только один объект в группе переключателей. Здесь также можно использовать атрибут checked, который задается аналогичным образом, как и в случае с флажками.
- type=»file» /> — создает поле ввода, которое показывает файлы на вашем компьютере подобно тому, как вы открываете или сохраняете документы в большинстве программ. Оно позволяет пользователям загружать файлы на сервер.
- type=»submit» /> — создает кнопку отправки данных формы программе-обработчику. Можно самому задавать текст, который будет отображаться на кнопке отправки (то же самое можно сделать и с типами button и reset – см.ниже). Это делается при помощи атрибута value, например, .
- type=»image» /> — создает специальную кнопку отправки, в качестве которой будет использоваться активное изображение. При этом серверу кроме данных формы еще отправляются и координаты (x, y) нажатия мыши на изображение. Также необходимо указывать атрибут src, который играет ту же роль, что и в теге .
- type=»button» /> — создает кнопку, которая без дополнительного кода ничего не будет делать.
- type=»reset» /> — создает кнопку, которая при нажатии на нее возвращает все поля формы к значениям по умолчанию.
- type=»hidden» /> — создает поле, которое не отображается в окне браузера. Оно используется для передачи различной вспомогательной информации, например, имени страницы, на которой находится пользователь, или электронный адрес, куда должна пересылаться форма.
Обратите внимание, что тег закрывает сам себя при помощи конструкции «/>».
При отправке данных формы посылается выбранный элемент списка.
Аналогично атрибуту checked в флажках и переключателях тег может иметь атрибут selected:
Все упомянутые выше теги будут корректно отображаться на веб-странице, однако если попытаться обработать соответствующей программой, то ничего не получится. Это произойдет, потому что всем полям формы необходимо присвоить имена. Имена присваиваются при помощи атрибута name, который необходимо добавить каждому полю формы. Например,
Форма может иметь, например, следующий вид. (Внимание: форма не будет работать до тех пор, пока не будет реализован скрипт «contactus.php», указанный в атрибуте action тега , и который обрабатывает передаваемые данные.)
Для начала этой информации будет вполне достаточно. Позднее вы узнаете, как создавать формы с более широкими возможностями.