Формы в php: PHP: Работа с формами — Manual

поля, радио кнопки и флажки

  • HTML формы
  • Как работают HTML формы
  • HTML тег <form>
  • Элементы <input>
  • Элемент <textarea>
  • Выпадающий список
  • Элементы <fieldset> и <legend>
  • Элемент <label>

HTML формы

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

Как работают HTML формы

Формы состоят из двух частей: HTML разметка (то что отображается на веб-странице) и обработка данных на клиентской (проверка заполнения полей, проверка корректности введенной информации и т.д.) или серверной стороне (сохранение введенных данных, отправка электронных писем и т.д.). Обработка данных формы на сервере обычно написана на PHP, Ruby on Rails, Perl, Python, Node. js и Java.

Рассмотрим пошаговую работу формы:

  1. посетитель заходит на страницу с формой, заполняет ее и отсылает
  2. браузер отсылает данные из формы на сервер
  3. сервер получает данные и передает их сценарию для обработки
  4. серверный сценарий обрабатывает данные и создает новую HTML-страницу с ответом, которую он передает обратно веб-серверу
  5. веб-сервер отправляет страницу с ответом обратно браузеру
  6. браузер получает страницу и отображает ее

HTML тег <form>

Формально, все элементы формы должны находиться внутри элемента <form>:


<form action="myform.php" method="post">
...
содержимое формы
...
</form>

Элемент <form> является контейнером, таким же как <div> или <span>, но он также может содержать атрибуты, которые позволяют настроить запрос отправки, когда пользователь нажимает кнопку «Отправить». Двумя наиболее важными атрибутами являются action и method.

  • Атрибут action указывает путь к файлу, куда следует отправлять собранные данные. Если он не указан, данные отправляются на URL-адрес страницы, содержащей форму.
  • Атрибут method указывает метод передачи данных: get или post. (подробнее о методах передачи данных читайте описание тега <form> в HTML справочнике)

Элементы <input>

Наиболее часто используемым элементом в формах является <input>. Он позволяет добавить в форму различные элементы для ввода данных. Какой именно элемент ввода данных будет отображен на экране определяется с помощью атрибута type:

type=»text»
Значение text создает однострочное текстовое поле:

<form action="myform.php" method="post">
  <input type="text" name="name">
</form>
Попробовать »

Атрибут name требуется большинству элементов формы, так как его значение передается на сервер и используется серверными сценариями.

Примечание: обратите внимание, что элемент <input> относится к пустым элементам и не имеет закрывающего тега, поэтому перед или после элемента обычно добавляют текст (метка), содержащий информацию о том, какую информацию нужно вводить в текущее поле.

type=»submit»
Создает кнопку, при нажатии на которую браузер отправляет форму на сервер:

<form action="myform.php" method="post">
  <input  type="submit" value="Отправить">
</form>
Атрибут value задает текст, который будет отображен на кнопке, заменяя значение установленное по умолчанию.
type=»radio»
Создает элементы управления, позволяющие выбрать только один вариант из предложенных, то есть такие элементы управления являются взаимозаменяемыми. Они называются радио кнопками или переключателями:

<form action="myform.php" method="post">
  <input type="radio" name="response" value="yes">да<br>
  <input type="radio" name="response" value="no">нет
</form>
Попробовать »

Все радио кнопки, связанные с заданными вариантами значений, должны иметь одинаковое значение атрибута name, но каждая отдельная радио кнопка должна иметь уникальное значение атрибута value.

Примечание: элемент <input> является строчным элементом, поэтому для отображения каждого элемента управления на новой строке нужно добавить после каждого элемента тег <br> или поместить каждый элемент в абзац (в тег <p>).

type=»checkbox»
Создает элементы управления, позволяющие пользователям отмечать любое количество вариантов или отменить выбор, не выбрав ни одно из предложенных значений. Такие элементы управления называют флажками.
<form action="myform.php" method="post"> <p><input type="checkbox" name="spice" value="Salt">Соль</p> <p><input type="checkbox" name="spice" value="Pepper">Перец</p> <p><input type="checkbox" name="spice" value="Garlic">Чеснок</p> </form>
Попробовать »

Все флажки, относящиеся к одной группе, должны иметь одинаковое значение атрибута name, но каждый отдельный вариант должен иметь уникальное значение атрибута value.

Примечание: все допустимые значения атрибута type смотрите в нашем HTML справочнике в описании элемента <input>.

Элемент <textarea>

Элемент <textarea> создает многострочное текстовое поле. Если в поле введено больше текста, чем может поместится в текстовой области, то с правой стороны появляется полоса прокрутки. Текст, расположенный между открывающим и закрывающим тегом, будет отображаться в текстовом поле в качестве значения по умолчанию:


<form action="myform.php" method="post">
  <textarea name="comments" rows="10" cols="48">Комментарии оставлять тут!</textarea>
</form>

Попробовать »

Атрибут name должен содержать уникальное имя, которое будет идентифицировать данный элемент на серверной стороне. Атрибут rows позволяет указать количество строк, определяющих высоту текстовой области, а cols задает ширину текстовой области в символах.

Выпадающий список

Элемент <select> создает меню, содержащее выпадающий список. Элементы списка задаются с помощью элементов <option>, которые должны располагаться между открывающим и закрывающим тегами элемента <select>:


<form action="myform.php" method="post">
  <select name="character">
    <option value="Homer">Homer Simpson</option>
    <option value="Marge">Marge Simpson</option>
    <option value="Bart">Bart Simpson</option>
    <option value="Lisa">Lisa Simpson</option>
    <option value="Maggie">Maggie Simpson</option>
  </select>
</form>

Попробовать »

Элементы <fieldset> и <legend>

Для визуального выделения взаимосвязанных элементов формы можно воспользоваться элементом <fieldset>, который добавляет рамку вокруг своих дочерних элементов:


<form action="myform.
php" method="post"> <input type="radio" name="response" value="yes">да<br> <input type="radio" name="response" value="no">нет <fieldset> <p><input type="checkbox" name="spice" value="Salt">Соль</p> <p><input type="checkbox" name="spice" value="Pepper">Перец</p> <p><input type="checkbox" name="spice" value="Garlic">Чеснок</p> </fieldset> </form>

Попробовать »

Название (заголовок) для такой группы элементов можно указать с помощью элемента <legend>, который должен быть первым дочерним элементом внутри элемента <fieldset>:


<form action="myform.php" method="post">

  <input type="radio" name="response" value="yes">да<br>
  <input type="radio" name="response" value="no">нет
  
  <fieldset>
    <legend>Специи</legend>
    <p><input type="checkbox" name="spice" value="Salt">Соль</p>
    <p><input type="checkbox" name="spice" value="Pepper">Перец</p>
    <p><input type="checkbox" name="spice" value="Garlic">Чеснок</p>
  </fieldset>
  
</form>

Попробовать »

Элемент <label>

Можно добавлять текст к элементам формы просто написав его рядом с нужным элементом, но для браузеров и поисковых систем, анализирующих разметку веб-страницы, это будет просто текст, не имеющий прямого отношения ни к одному из элементов формы. Элемент <label> позволяет связать текст с определенным элементом формы, такой текст называется меткой (или ярлыком).

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

Связать метку с элементом формы можно двумя способами: поместить весь элемент формы внутрь элемента <label> или с помощью атрибута for, который в качестве значения принимает идентификатор элемента формы, с которым нужно связать метку:


<form action="myform.php" method="post">

  <p><label><input type="radio" name="response" value="yes">да</label></p>
  <p><label><input type="radio" name="response" value="no">нет</label></p>
	
  <p>
    <input type="checkbox" name="spice" value="Salt">
	<label for="spice_salt">Соль</label>
  </p>
  <p>
    <input type="checkbox" name="spice" value="Pepper">
	<label for="spice_pepper">Перец</label>
  </p>
  <p>
    <input type="checkbox" name="spice" value="Garlic">
	<label for="spice_garlic">Чеснок</label>
  </p>
  
</form>

Попробовать »

Метки можно размещать как до так и после элемента управления, связанного с ней, потому что, если значение атрибута for элемента <label> совпадает со значением атрибута id элемента формы, то неважно где будет находиться метка.

Форма отправки данных в PHP (POST, GET)

Чтобы организовать передачу данных на сервер с помощью формы, потребуется реализовать HTML форму, в которую посетители сайта будут вводить свою информацию и PHP код, назначение которого в принятии и обработке полученных данных на сервере.

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

Форма на странице формируется тегами <form>…</form>, внутри которых помещаются теги полей для ввода текстовой информации, теги специальных компонентов (например, поле со списком), теги для поля выбора и загрузки файла.

Для HTML5 так же существует возможность размещать теги полей формы не внутри тегов формы, а в любом месте на странице. При этом для каждого такого поля нужно указывать атрибут «form», чтобы определить с какой формой отправки он должен взаимодействовать.

Итак, простейшая форма отправки может содержать следующий код:

<form action="myform.php" method="post">
Значение А: <input type="text" name="data1">
Значение Б: <input type="text" name="data2">
<input type="submit" value="Отправить">
</form>

Элементы формы и их параметры:

action=»myform. php» – атрибут «action» определяет, какой php-файл будет обрабатывать отправляемые данные. В этом примере, данные будут отправлены в файл «myform.php», находящийся в той же директории что и страница с формой. Если этот атрибут не указать явно, данные формы будут отправлены по адресу страницы самой формы.

method=»post» – параметр method определяет метод передачи данных POST или GET. Более подробно об этом в статье «Отличия методов POST или GET». Если не указывать атрибут явно, по умолчанию будет использоваться метод GET.

Текст «Значение А:» и «Значение Б:» добавлен только с целью оформления и понятности формы для пользователя. Добавлять это для передачи данных не обязательно, но для того, чтобы пользователю стало понятно, что вводить, стоит указывать.

Теги <input> используются для формирования различных управляющих элементов формы.

type=»text» – атрибут «type» определяет вид поля. В зависимости от того, какой тип указан, меняется и внешний вид элемента, и его назначение. Значение атрибута «text» указывает, что в браузере элемент будет отображаться однострочным текстовым полем, куда пользователь сможет ввести свою строку.

name=»data1″ – атрибут «name», указывает имя, вернее индекс данных в массиве, полученных сервером. Это обязательный параметр, по которому в php-обработчике можно будет затем получить доступ переданному значению. Имя может быть выбрано произвольно, однако, удобнее когда это значение имеет какой-то понятный смысл.

type=»submit» – тег <input> с таким значением параметра «type» будет отображаться на странице как кнопка. На самом деле на форме можно обойтись и без кнопки. Если, например, в форме есть текстовые поля, то отправку можно осуществить, просто нажав «Ввод» на клавиатуре. Но наличие кнопки делает форму более понятной.

value=»Отправить» – в данном случае (для type=»submit») определяет только надпись на кнопке. Для type=»text», например, это будет текст, который будет выведен в текстовом поле.

В итоге, на странице этот код будет выглядеть приблизительно так:

 

Обработка отправленных HTML формой данных в PHP

Отправленные описанным способом данные, помещаются в суперглобальные массивы $_POST, $_GET и $_REQUEST. $_POST или $_GET будут содержать данные в зависимости от того, каким методом осуществлялась отправка. $_REQUEST содержит отправленные данные любым из указанных методов.

$_POST, $_GET и $_REQUEST – это ассоциативные массивы, поля-индексы которых совпадают с атрибутами «name» тегов <input>. Соответственно, для работы с данными в файле myform.php можно присвоить переменным значения элементов такого массива указав в качестве индекса имя поля:

// для метода GET
$a = $_GET['data1'];
$b = $_GET['data2'];

// для метода POST
$a = $_POST['data1'];
$b = $_POST['data2'];

// при любом методе
$a = $_REQUEST['data1'];
$b = $_REQUEST['data2'];

Проверка заполнения полей формы

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

if (empty($_REQUEST['data1'])) {
echo 'Поле не заполнено';
} else {
echo 'Поле было заполнено';
$a = $_REQUEST['data1'];
}

Обычно этого решения достаточно. Если нужно вводить текст, то будет понятно, введен он или нет. Однако, если пользователь намеренно для вычислений введет ноль, то функция empty покажет, что значения нет. Поэтому для таких ситуаций лучше использовать функцию isset. Она будет явно проверять, заданно ли значение или нет.

if (isset($_REQUEST['data1'])) {
echo 'Поле было заполнено';
$a = $_REQUEST['data1'];
} else {
echo 'Поле не заполнено';
}

Бесплатный PHP FormMail — обработчик контактных форм, размещенные контактные формы, шифрование форм

FormMail

Возможно, самый продвинутый процессор контактных форм из когда-либо созданных! Обработка форм PHP на вашем сервере .

Особенности

  • Это бесплатно! Бесплатный инструмент «Сделай сам» или недорогой мастер настройки. Ваш выбор, чтобы сэкономить деньги или время.
  • Безопасная обработка контактной формы HTML. Tectite FormMail имеет долгую историю без серьезных уязвимостей безопасности.
  • Мощные функции защиты от спама!
  • С нашим PHP-скриптом обработки форм вы можете делать практически все, что захотите, к тому же он постоянно совершенствуется.
  • Подробнее…

ПРОСТОЙ МАСТЕР НАСТРОЙКИ

Начните быстро без ручного редактирования!


Отзыв

Я просто хотел сказать, что то, что вы, ребята, делаете, совершенно потрясающе!!

Я не хотел обновлять FormMail, потому что не хотел пропустить что-то в новой конфигурации, но я только что обнаружил, что у вас есть мастер обновлений — он просто крут!!

Сделал все быстро, и я не могу отблагодарить вас достаточно!! ЭТО иногда может быть невоспетым героем, так что я просто хотел сказать, продолжайте в том же духе!

Маркус Шрайбер
США

Размещенные контактные формы

Обработайте свою контактную форму (или любую форму, которую вы хотите) с помощью безопасного Скрипт формы PHP на нашем сервере .

Особенности

  • Ваши формы на вашем веб-сайте , материалы обрабатываются нашим сервером.
  • Гарантированная отправка почты. Не зацикливайтесь на неработающей конфигурации PHP вашего сервера!
  • Сохраненные результаты формы — никогда не теряйте отправку из-за неработающих спам-фильтров.
  • Ежедневные отчеты.
  • Включены функции защиты от спама FormMail.
  • Подробнее…

НАЧНИТЕ БЕСПЛАТНО!

Служба бесплатных размещенных форм.


Свидетельство

Большое спасибо за вашу помощь (и добавление функциональности) к этому.

Я относительный новичок в HTML и довольно рад, что форма работает так, как нужно сейчас. Он отлично функционировал на веб-сайте в течение многих лет, но недавнее изменение хостинговой компании остановило получение большого количества электронных писем.

Это размещенное решение кажется идеальным, поскольку до сих пор учитывались все электронные письма.

Марк Фритцер
США

Шифрование формы

Программное обеспечение для шифрования вашей контактной формы, формы обратной связи, формы запроса или любого другого веб-форма, которая нуждается в полной безопасности.

Возможности

  • Шифрует результаты формы
    до того, как они покинут ваш сервер.
  • Безопасный сбор заказов и платежей.
  • Повысьте доверие к своей компании и сайту.
  • Обеспечьте конфиденциальность ваших клиентов.
  • Работает с любым обработчиком форм и любой программой электронной почты (включая электронную почту через Интернет).
  • Подробнее…

ТОЛЬКО 95 долларов США

Безопасные результаты формы!


Свидетельство

Я так рад, что нашел ваш скрипт FormMail и кодировщик/декодер FormMail!

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

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *