Php для отправки данных формы используется кнопка типа: Отправка данных формы | htmlbook.ru

Содержание

php контактная форма, две кнопки отправки



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

У меня есть раздел загрузки файлов в контактной форме php, кнопка отправки для загрузки файла, вместо этого отправляет форму. как я могу отличить две кнопки отправки?

В основном это две формы POST, файл загружается один в контактную форму php.

php html forms
Поделиться Источник Alexand657     24 января 2013 в 02:25

2 ответа


  • Одна форма две кнопки отправки

    У меня есть две похожие формы на сайте, которые я хотел бы объединить в одну форму с двумя кнопками отправки. Они используют большую часть одних и тех же данных. Первая форма использует GET для отправки данных на другой сервер. Вторая форма отправляет его в email. Я хотел бы настоятельно…

  • Контактная форма php, js и jquery вопросы

    Моя контактная форма не работает, и я вообще не могу найти ошибку. У меня есть contact-us.php и sendmail.php и custom.js Контакт-us.php, имеет включенный вызов на sendmail.php. Кроме того, честно говоря, я включил этот скрипт, расположенный по адресу js / jquery.min.js, но не уверен, что он связан…



3

Просто дайте каждому имя:

<input type="submit" name="submit1" value="Submit 1">
<input type="submit" name="submit2" value="Submit 2">

if (isset($_POST['submit1'])) {
  // submit 1 pressed
}
else if (isset($_POST['submit2'])) {
  // submit 1 pressed
}

Поделиться John Conde     24 января 2013 в 02:26



2

Пример Формы:

<form method="post">
<input type="submit" name="submit1" value="Button1">
<input type="submit" name="submit2" value="button2">
</form>

Затем работайте с сервером name="" на стороне. .

<?php

if (isset($_POST['submit1']))
{
 echo "Button1 Is Set <br>";
}
if (isset($_POST['submit2']))
{
 echo "Button2 Is Set <br>";
}
?>

Поделиться Daryl Gill     24 января 2013 в 02:28


Похожие вопросы:


PHP Контактная Форма

Моя контактная форма работает нормально, но когда вы нажимаете кнопку Отправить, она загружает файл PHP. <form name=contactform method=post action=send_form_email.php> А это кнопка Отправить:…


Две кнопки изображения или две отправки

Я разработчик .NET, почти отказывающийся от личного проекта с использованием PHP. Мне нужна следующая страница PHP: Форма с двумя случайными изображениями (идентифицируемыми кодом), где пользователь…


Две кнопки отправки в одной форме

У меня есть форма, в которой есть пять (5) элементов управления вводом файлов наряду с другими элементами управления. Эта форма также имеет две (2) кнопки отправки. Я использовал плагин проверки…


Одна форма две кнопки отправки

У меня есть две похожие формы на сайте, которые я хотел бы объединить в одну форму с двумя кнопками отправки. Они используют большую часть одних и тех же данных. Первая форма использует GET для…


Контактная форма php, js и jquery вопросы

Моя контактная форма не работает, и я вообще не могу найти ошибку. У меня есть contact-us.php и sendmail.php и custom.js Контакт-us.php, имеет включенный вызов на sendmail.php. Кроме того, честно…


контактная форма php справка

Хорошо, у меня есть наша контактная форма, полностью работающая и обрабатываемая правильно. У меня есть два вопроса … на странице контактной формы я хочу добавить checkbox для галочки…


Форма должна обрабатывать две кнопки отправки в PHP

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


Jquery контактная форма скрывается после отправки

У меня есть контактная форма, которая скрыта при загрузке страницы. Затем контактную форму можно просмотреть, нажав кнопку контактная форма, в результате чего она будет slideUp и slideDown. Проблема…


Контактная форма javascript верификация переиграла

Я администрирую старый сайт, на котором есть контактная форма. Это проверяется javascript, чтобы отфильтровать нежелательную почту. В последнее время клиент жалуется, что время от времени получает…


Контактная форма отправить позиционирование кнопки

Это мой сайт: http://cvkj.agencialosnavegantes.cl / У меня есть контактная форма в нижней части страницы, и я пытаюсь поместить кнопку отправки рядом с текстовым полем, но мне очень трудно. Это мой…

PHP | Отправка форм. POST-запросы

Отправка форм

Последнее обновление: 15.03.2021

Одним из основных способов передачи данных веб-сайту является обработка форм. Формы представляют специальные элементы разметки HTML, которые содержат в себе различные элементы ввода — текстовые поля, кнопки и т.д. И с помощью данных форм мы можем ввести некоторые данные и отправить их на сервер. А сервер уже обрабатывает эти данные.

Создание форм состоит из следующих аспектов:

  • Создание элемента <form><form> в разметке HTML

  • Добавление в этот элемент одно или несколько поле ввода

  • Установка метода передачи данных. Чаще всего используются методы GET или POST

  • Установка адреса, на который будут отправляться введенные данные

POST-запросы

Итак, создадим новую форму. Для этого определим новый файл form.php, в которое поместим следующее содержимое:


<!DOCTYPE html>
<html>
<head>
<title>METANIT. COM</title>
<meta charset="utf-8" />
</head>
<body>
<h4>Форма ввода данных</h4>
<form action="user.php" method="POST">
    <p>Имя: <input type="text" name="name" /></p>
    <p>Возраст: <input type="number" name="age" /></p>
    <input type="submit" value="Отправить">
</form>
</body>
</html>

Атрибут action="user.php" элемента form указывает, что данные формы будет обрабатывать скрипт user.php, который будет находиться с файлом form.php в одной папке. А атрибут method="POST" указывает, что в качестве метода передачи данных будет применяться метод POST.

Теперь определим файл user.php, который будет иметь следующее содержание:


<?php
$name = "не определено";
$age = "не определен";
if(isset($_POST["name"])){
 
    $name = $_POST["name"];
}
if(isset($_POST["age"])){
 
    $age = $_POST["age"];
}
echo "Имя: $name <br> Возраст: $age";
?>

Для обработки запросов типа POST в PHP используется встроенная глобальная переменная $_POST. Она представляет ассоциативный массив данных, переданных с помощью метода POST. Используя ключи, мы можем получить отправленные значения. Ключами в этом массиве являются значения атрибутов

name у полей ввода формы.

Например, так как атрибут name поля ввода возраста имеет значение age (<input type="number" name="age" />), то в массиве $_POST значение этого поля будет представлять ключ «age»: $_POST["age"]

И поскольку возможны ситуации, когда поле ввода будет не установлено, то в этом случае желательно перед обработкой данных проверять их наличие с помощью функции isset(). И если переменная установлена, то функция isset() возвратит значение true.

Теперь мы можем обратиться к скрипту form.php и ввести в форму какие-нибудь данные:

И по нажатию кнопки введенные данные методом POST будут отправлены скрипту user.php:

Необязательно отправлять данные формы другому скрипту, можно данные формы обработать в том же файле формы. Для этого изменим файл form.php следующим образом:


<!DOCTYPE html>
<html>
<head>
<title>METANIT.COM</title>
<meta charset="utf-8" />
</head>
<body>
<?php
$name = "не определено";
$age = "не определен";
if(isset($_POST["name"])){
 
    $name = $_POST["name"];
}
if(isset($_POST["age"])){
 
    $age = $_POST["age"];
}
echo "Имя: $name <br> Возраст: $age";
?>
<h4>Форма ввода данных</h4>
<form method="POST">
    <p>Имя: <input type="text" name="name" /></p>
    <p>Возраст: <input type="number" name="age" /></p>
    <input type="submit" value="Отправить">
</form>
</body>
</html>

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

Стоит отметить, что в принципе мы можем отправлять формы и запросом GET, в этом случае для получения тех же значений формы применяется массив $_GET, который был рассмотрен в прошлой теме:


<!DOCTYPE html>
<html>
<head>
<title>METANIT.COM</title>
<meta charset="utf-8" />
</head>
<body>
<?php
$name = "не определено";
$age = "не определен";
if(isset($_GET["name"])){
 
    $name = $_GET["name"];
}
if(isset($_GET["age"])){
 
    $age = $_GET["age"];
}
echo "Имя: $name <br> Возраст: $age";
?>
<h4>Форма ввода данных</h4>
<form method="GET">
    <p>Имя: <input type="text" name="name" /></p>
    <p>Возраст: <input type="number" name="age" /></p>
    <input type="submit" value="Отправить">
</form>
</body>
</html>

Поисковые формы — Веб-разработка на PHP

Веб-разработка на PHP

HTML Формы — основной инструмент для создания интерактивных сайтов. Через них происходит регистрация пользователя, добавление в друзья, оплата покупок, фильтрация товара в магазине и тому подобное. Самые простые формы — поисковые. Они ничего не изменяют и не создают, а используются только для фильтрации данных. Такой поиск реализован на Хекслете на странице поиска https://ru.hexlet.io/courses. Аналогичная строка поиска используется и в поисковых системах.

<form action="/courses" method="get">
  <input type="search" required name="term">
</form>

Основной элемент формы тег <form>. Все элементы формы должны быть вложены в него. У этого тега есть атрибут action, в котором можно указать адрес на который отправятся данные формы (по умолчанию будет использован адрес текущей страницы). Второй часто используемый атрибут — method. Он принимает два возможных параметра get или post, что соответствует HTTP методам. Напомню что семантика этих методов в том, что GET используется для чтения информации и не изменяет состояние системы, а POST неидемпотентный глагол, который используется при отправке форм изменяющих состояние системы, например, во время регистрации нового пользователя. По умолчанию значение этого атрибута get. После отправки формы этим методом, ее данные передаются как параметры запроса. Если в форму выше ввести строчку sql и нажать Enter, то браузер откроет страницу по адресу https://ru.hexlet.io/courses?term=sql. Такой страницей можно поделиться с другими людьми и они увидят те же данные (если выдача не персонализированная).

Интересный факт. Поисковые боты (программы, индексирующие контент в интернете) распознают поисковые формы (смотрят что метод отправки GET) и пытаются их использовать для того чтобы добавить в индекс поисковых систем как можно больше данных.

Для элементов формы используются теги input, button, select и textarea.

В свою очередь тег <input> благодаря атрибуту type может принимать множество различных форм:

  • Множественный выбор (checkbox)
  • Одиночный выбор (radio)
  • Кнопка отправки формы (submit)
  • Поле для ввода пароля (password)
  • Множество других таких как: tel, email, range и т. п.

HTML Формы



Формы предназначены для пересылки данных от пользователя к веб-серверу. Формы в HTML могут состоять из текстовых полей и текстовых областей, флажков и переключателей, а также раскрывающихся списков. Все это — элементы формы. Каждый элемент служит для того, чтобы передать какое-либо значение сайту.
По своей сути HTML-форма — это веб-страница на которой вы видите области для ввода своей информации. После того, как вы заполните форму и нажмете кнопку отправить, информация из формы упаковывается и отсылается веб-серверу для обработки серверным сценарием (файлом-обработчиком). После обработки к вам возвращается в качестве ответа другая веб-страница. Следующий рисунок наглядно демонстрирует как работает форма:

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

Пример: Простая HTML-форма

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"> <title>Простая форма</title> </head>
<body> <form action="action_form.php" method="POST"> <p>Моя первая форма:<br> Имя: <input type="text" name="firstname" value=""><br> Фамилия: <input type="text" name="lastname" value=""><br> <input type="submit"> </p> </form> </body>
</html>

Элемент

<form>

Формы вставляются на веб-страницы посредством элемента <form>. Он представляет собой контейнер для всего содержимого формы, включая такие элементы, как текстовые поля и кнопки, а также любые другие теги языка HTML. Однако он не может содержать в себе другой элемент <form>.
Для отправки формы на сервер используется кнопка «Submit», того же результат получится, если нажать клавишу «Enter» в пределах формы. Если кнопка «Submit» отсутствует в форме, клавиша «Enter» может быть использована для отправки.
Большинство атрибутов элемента <form> влияют на обработку формы, а не на ее дизайн. Наиболее распространёнными из которых являются action и method. Атрибут action содержит URL, на который информация в форме будет отправлена для обработки сервером. Атрибут method является методом HTTP, который должны использовать браузеры для отправки данных формы.

Элемент

<input>

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

<input type="значение">

Вот некоторые значения атрибута type:

ЗначениеОписание
textввод одной строки текста
radioэлемент-переключатель (иногда их называют радио-кнопками)
passwordтекстовое поле для ввода пароля, в котором все вводимые символы заменяются звездочкой
checkboxполе для установки флажка, который можно установить или сбросить
submitкнопка, при нажатии которой происходит отправка данных, введенных в форму
resetкнопка, при нажатии которой вся форма очищается. Точнее сказать, все элементы формы получают значения по умолчанию
buttonобычная командная кнопка

Ввод текста и пароля

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

<input type="text">

Поле ввода пароля является разновидностью обычного текстового поля. Оно поддерживает те же атрибуты, что и однострочное текстовое поле. Атрибут name устанавливает имя поля ввода пароля, которое будет отправлено на сервер вместе с паролем, введенным пользователем. Чтобы создать поле для ввода пароля, необходимо задать значение password атрибуту type (password (англ.) — пароль):

<input type="password">

Пример создания формы с полем для ввода пароля:

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

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"> </head>
<body> <form action="action_form.php" method="POST"> <p>Ваш логин: <input type="text" name="login" size="15" maxlength="30" value="Ваше имя"> </p> <p>Пароль: <input type="password" name="password" size="15" maxlength="30"> </p> <input type="submit"> </form> </body>
</html>

Вместе с этим атрибутом можно использовать атрибут maxlenght, значение которого определяет максимальное количество символов, которые можно ввести в данную строку. Можно также задать длину поля ввода, используя атрибут size. По умолчанию, в большинстве браузеров ширина текстового поля ограничена 20 символами. Для управления шириной элементов новых форм, вместо атрибута size, рекомендуется использовать средства каскадных таблиц стилей (CSS).
Атрибут value задает значение, которое по умолчанию отображается в текстовом поле в момент загрузки формы. Введя в поле значение по умолчанию, можно пояснить пользователю, какие именно данные и в каком формате вы хотите, чтобы пользователь сюда занес. Это как образец, ведь пользователю гораздо удобнее заполнять форму, видя перед собой пример.

Переключатели (radio)

Элемент <input> типа radio создает переключатели, которые используют принцип логического «ИЛИ», позволяя выбрать только одно из нескольких значений: если вы выбираете одно положение, то все остальные становятся неактивными. Основной синтаксис элемента-переключателя:

<input type="radio" name="имя _переменной" value="значение">

Атрибут name для переключателей обязателен и играет важную роль в объединении нескольких элементов-переключателей в группу. Для объединения переключателей в группу необходимо установить одинаковое значение атрибута name и разное значение атрибута value. Атрибут vаluе устанавливает значение выбранного переключателя, которое будет отправлено серверу. Значение каждого элемента-переключателя должно быть уникальным внутри группы, для того, чтобы сервер знал, какой вариант ответа выбрал пользователь.
Наличие атрибута checked (с англ. — установлен) у элемента-переключателя указывает на то, какой из предлагаемых вариантов должен быть выбран по умолчанию при загрузке страницы, если это необходимо. Данный атрибут может быть установлен только у одного элемента-переключателя из группы:

Пример: Использование переключателей

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"> </head>
<body> <form action="action_form.php" method="POST"> <p>Сколько Вам лет?</p> <ol> <li><input type="radio" name="age" value="18" checked>младше 18</li> <li><input type="radio" name="age" value="18-24">от 18 до 24</li> <li><input type="radio" name="age" value="25-34">от 25 до 35</li> <li><input type="radio" name="age" value="35-50">более 35</li> </ol> <input type="submit"< </form> </body>
</html>

Флажки (checkbox)

Элемент <input> типа checkbox создает флажки, которые напоминают переключатели тем, что дают пользователю возможность выбирать из предложенных вами вариантов. Главным отличием от переключателей является то, что посетитель может выбрать сразу несколько вариантов, а сами флажки обозначаются квадратиками, а не кружочками. Как и в случае с переключателями, группа флажков создается путем назначения каждому пункту одного и того же значения атрибута name, однако каждый флажок имеет собственное значение. Основной синтаксис флажка:

<input  type="checkbox"  name="имя _переменной"  value="значение">

Атрибут checked, как и в случае с переключателями, указывает, что данный флажок должен быть установлен по умолчанию при загрузке страницы. Данный атрибут может быть установлен одновременно для нескольких флажков группы.
В следующем примере использование флажков заданы несколько выбранных по умолчанию вариантов ответа:

Пример: Использование переключателей

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"> </head>
<body> <form action="action_form.php" method="POST"> <p>Какие музыкальные жанры Вы любите?</p> <ol> <li><input type="checkbox" name="musik" value="juze" checked>Джаз</li> <li><input type="checkbox" name="musik" value="bluse" checked>Блюз</li> <li><input type="checkbox" name="musik" value="rock">Рок</li> <li><input type="checkbox" name="musik" value="shanson">Шансон</li> <li><input type="checkbox" name="musik" value="kantry">Кантри</li> </ol> <input type="submit"< </form> </body>
</html>

Кнопки подтверждения (submit) и очистки (reset)

Элемент <input> типа submit создает кнопку, при нажатии которой происходит отправка браузером серверному сценарию на обработку данных, введенных пользователем в форму. Если создаем кнопку, очищающую форму, то присваиваем атрибуту type значение «reset». Элементу <input> типа submit может быть присвоен необязательный атрибут name. Атрибут vаluе используется в данном элементе для указания текста, обозначающего надпись на кнопке. По умолчанию в браузерах на кнопке пишется «Отправить» (Submit), если вас данная надпись не устраивает — введите ее самостоятельно. Поскольку в разных браузерах стили кнопок подтверждения могут отличаться, поэтому лучше самостоятельно настроить стиль кнопки, воспользовавшись средствами CSS либо использовать графические кнопки.
Создание кнопок подтверждения и очистки:

Пример: Использование submit и reset

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"> </head>
<body> <form action="action_form.php" method="POST"> <p>Подпишись на рассылку новостей:</p> <input type="text" name="email"> <input type="submit" name="podpisatsya" value="Подписаться"> <input name="reset" type="reset" value="Очистить"> </form> </body>
</html>

Атрибут action.

Главным для элемента <form> является атрибут action, который указывает обработчик данных для формы. Обработчик данных — это файл, описывающий, что нужно делать с данными формы. В качестве результата этой обработки выдается новая HTML-страница, которая возвращается браузеру. Другими словами в атрибуте action указывается URL-путь к файлу-обработчику на сервере (иногда называемого страницей сценария) для обработки формы. Синтаксис следующий:

<form action="http://mytestserver.com/namefolder/obrabotchik.php">…    </form>

Файл обработки находится на сервере mytestserver.com в папке namefolder и название серверного сценария, который будет обрабатывать данные — obrabotchik.php. Именно ему и будут переданы все данные, введенные вами в форму на веб-странице. Расширение .php указывает на то, что указанная форма обрабатывается сценарием написанном на языке PHР. Сам обработчик может быть написан на другом языке, например это может быть язык сценариев Python, Ruby и др.
Желательно всегда задавать значение атрибута action. Если форма должна передать значения на ту же страницу, где она расположена в качестве значения атрибута action укажите пустую строку: action=»».

Атрибут method

Атрибут method задает то, каким образом информация должна быть передана на сервер. Выбор метода отправки формы зависит от данных, которые необходимо отправить вместе с ней. Здесь основную роль играет объем этих данных. Наиболее популярными являются два метода передачи исходных данных вашей формы из браузера на сервер: GET и POST. Метод устанавливается любой на выбор, и если вы его не указали, по умолчанию будет использоваться GET. Рассмотрим применение каждого из них.

Метод POST

Метод POST упаковывает данные формы и отсылает их серверу незаметно для пользователя, поскольку данные содержатся в теле сообщения. Веб-браузер, при использовании метода POST отправляет на сервер запрос, состоящий из специальных заголовков за которыми следуют данные формы. Так как содержимое этого запроса доступно только серверу, метод POST применяется для передачи конфиденциальных данных, таких как пароли, реквизиты банковских карт и другая персональная информация пользователей. Метод POST также подходит для отправки больших объемов информации, так как в отличие от метода GET, у него нет ограничений по количеству передаваемых символов.

Метод GET

Как вы уже знаете основная работа браузера — это получать веб-страницы от сервера. Так вот, когда вы используете метод GET, ваш браузер просто получает веб-страницу, как делает это всегда. Метод GET также упаковывает данные формы, но, прежде чем отправить запрос серверу, присоединяет их в конец URL-адреса. Чтобы понять, как работает метод GET, давайте посмотрим его в действии. Откройте в блокноте (например Notepad++) первый пример из этого урока (Пример: Простая HTML-форма) и внесите в HTML-код небольшое изменение:

<form action="" method="GET">

т.е. замените POST на GET.
Сохраните файл под именем file_name.html и обновите страницу браузера (F5), затем заполните форму, например Вася Пупкин, и нажмите кнопку «Отправить». В адресной строке браузера Вы увидите что-то типа этого:

...file_name.html?firstname=Вася&lastname=Пупкин

Теперь вы видите имя каждого элемента формы, а также его значение, прямо здесь, в URL-адресе.
URL-адрес отделяется от остальных данных формы символом знака вопроса, а имена и значения переменных разделяются знаком амперсанд (&).
Этот метод нужно использовать, если вы не передаете больших объемов информации.
Этот метод не подойдет, если данные в вашей форме являются конфиденциальными, например хранят номер банковской карты или пароль.
Кроме того, метод GET непригоден, если вместе с формой вы хотите переслать на сервер файлы.

Группировка элементов формы

Элементы формы, связанные по смыслу, можно сгруппировать между тегами <fieldset> и </fieldset>. Браузер отобразит <fieldset> в виде рамки вокруг группы элементов формы. Внешний вид рамки может быть изменен с помощью каскадных таблиц стилей (CSS).
Чтобы добавить заголовок для каждой группы, понадобится элемент <legend>, который задает встраиваемый в рамку текст заголовка группы:

Пример: Использование тега <fieldset>


Задачи





Элемент HTML формы текстовое поле

Элементы html формы кнопки и текстовые поля

С помощью форм в PHP можно получать информацию с веб страниц от пользователя и обрабатывать её в PHP скрипте. С помощью форм можно организовать на веб сайте анкеты, тесты, ввод информации о пользователе(регистрационная форма) и многое другое.  Разберём, как работают формы в PHP.
Чтобы создать форму на веб странице, необходимо в HTML использовать следующую конструкцию.
Синтаксис простейшей формы в HTML 
<form>
Элементы формы для ввода информации
Элемент  формы для отправки значений формы
</form>
Для ввода  одной строки используется тип элемента HTML формы input
Синтаксис элемента HTML формы ввода строковой информации input
 <input type=»text» name=»имя элемента»>
Для того чтобы данные формы были отправлены в PHP обработчик формы, используется элемент формы кнопки отправить
Синтаксис  элемента HTML формы кнопки для отправки содержимого формы
<input type=»submit» name=имя кнопки value=»название кнопки»> 

Обработка формы в PHP Метод GET и POST

При нажатии кнопки отправки формы  в PHP обработчик передаётся содержимое формы. Существует два метода передачи информации html формы GET и POST. При использовании метода GET параметры формы передаются через URL ссылку. При использовании метода POST информация формы при передаче скрывается. Всё содержимое формы записывается в глобаный массив $_GET или $_POST. Чтобы узнать значение элемента отправленной формы, нужно записать для метода GET
$_GET[‘имя элемента формы’]

Для метода POST 

$_POST[‘имя элемента формы’]
Чтобы обработать нажатие кнопки  отправки  формы в PHP скрипте нужно использовать следующую конструкцию для метода GET
if(isset($_GET[‘имя кнопки’])) 
{
Действия, которые нужно произвести в случае нажатия кнопки
}

Для метода POST

if(isset($_POST[‘имя кнопки’])) 
{
Действия, которые нужно произвести в случае нажатия кнопки
}

Для того чтобы в HTML форме указать используемый метод передачи информации необходимо в теге form в атрибуте method указать нужный метод. Для метода POST

<form method=»POST»>

Для метода GET

<form method=»GET»>

По умолчанию используется метод GET
Напишем пример простейшей формы в HTML с обработкой в PHP
Пример PHP скрипта с формой. Пользователь вводит своё имя в текстовое поле ввода, скрипт обрабатывает текстовое поле и выводит имя пользователя на веб страницу.
<?php
    if(isset($_GET[‘info’])) 
   echo «Ваше имя — {$_GET[‘name’]}»; 
?>
<form>
    <input type=»text» name=»name»> 
     <br></br>
    <input type=»submit» name=»info» value=»Отправить!»>
</form>
 
Разберём пример html фомы с двумя полями ввода. Через форму вводятся два числа. PHP скрипт складывает введённые числа. Мы ввели два однострочных текстовых поля с именами a и b и будем записывать значения переменных a и b.
<input type=»text» name=»a»>
  <br><br>
   <input type=»text» name=»b»>
В PHP обработчике формы, чтобы получить значение этих переменных, нужно обратиться к массиву $_GET, в качестве индекса массива $_GET указать имя поля формы.
  $a=$_GET[‘a’];
  $b=$_GET[‘b’];
Полный код простейшего калькулятора на PHP
<?php
$c;
    if(isset($_GET[‘summa’])) {
    $a=$_GET[‘a’];
    $b=$_GET[‘b’];
    $c=$a+$b;
    echo $a,’+’,$b,’=’,$c;
    } 
?>
<form>
    <input type=»text» name=»a»>
    <br><br>
    <input type=»text» name=»b»>
    <br><br>
    <input type=»submit» name=»summa» value=»Сложить!»>
</form>
Пример работы веб страницы простейшего калькулятора на PHP

Вернуться к содержанию курса по PHP  Перейти к теме Флажки и переключатели в PHP >>
 

Полезно : Регистрация домена и размещение сайта на хостинге

Поделиться 

 

 

Как определяется кнопка отправки по умолчанию в форме HTML?

Если вы отправляете форму через Javascript (то есть formElement. submit()или что-либо эквивалентное), то ни одна из кнопок отправки не считается успешной, и ни одно из их значений не включается в отправленные данные. (Обратите внимание, что если вы отправляете форму с помощью, submitElement.click()то отправка, на которую вы ссылались, считается активной; это не относится к сфере компетенции вашего вопроса, поскольку здесь кнопка отправки является однозначной, но я решил включить ее для людей, которые читают первую часть и задаются вопросом, как сделать кнопку отправки успешной с помощью отправки формы JS. Конечно, обработчики отправки формы все равно будут срабатывать таким образом, тогда как они не будут проходить, form.submit()так что это еще один чайник рыбы …)

Если форма отправляется нажатием клавиши Enter, находящейся в нетекстовом поле, то пользовательский агент сам решает, что ему здесь нужно. В спецификации ничего не говорится об отправке формы с помощью клавиши ввода в поле ввода текста (если вы нажимаете на кнопку и активируете ее с помощью пробела или чего-то еще, проблем нет, поскольку эта конкретная кнопка отправки однозначно используется). Все, что он говорит, — то, что форма должна быть отправлена, когда кнопка отправки активирована, даже не требование, чтобы нажать ввод, например, текстовый ввод отправит форму.

Я считаю, что Internet Explorer выбирает кнопку отправки, которая появляется первой в источнике; У меня такое ощущение, что Firefox и Opera выбирают кнопку с самым низким tabindex, возвращаясь к первому определенному, если ничего не определено. Существуют также некоторые сложности, связанные с тем, имеют ли отправляемые атрибуты значения не по умолчанию IIRC.

Суть в том, что не существует определенного стандарта для того, что здесь происходит, и это целиком и полностью зависит от браузера — поэтому, насколько это возможно во всех ваших действиях, старайтесь избегать какого-либо конкретного поведения. Если вы действительно должны знать, вы, вероятно, можете узнать поведение различных версий браузера, но когда я исследовал это некоторое время назад, были некоторые довольно запутанные условия (которые, конечно, могут быть изменены с новыми версиями браузера), и я бы посоветовал Вы должны избежать этого, если это возможно!

Несколько форм на одной странице с отправкой без перезагрузки

Вы можете скачать готовые файлы, в которые дополнительно включена проверка введенных данных в форму (валидация), поделившись статьей в Twitter.

Представьте, что у вас на странице сайта есть несколько форм связи с различным предназначением. Лучший способ объяснить эту потребность, это создание сайта, в котором необходимо разместить форму заказа звонка, форму запроса цены, форму запроса каталога и еще какие-либо необходимые вам формы.

За пересылку письма с введенными в форму данными отвечает PHP обработчик. Для передачи данных в обработчик используется кнопка с типом submit. В случае использования нескольких форм связи с одним php обработчиком Вы должны передать в него данные именно той формы, в которой была нажата кнопка «Отправить». Это можно сделать через if/else, с учетом разных имен атрибутов, наплодив одинаковых кусков кода, можно создать кучу обработчиков с разными именами, но одинаковым кодом, а можно использовать скрипт jQuery с помощью которого данные в обработчик будут отправляться из той формы где было произведено нажатие на кнопку «Отправить».

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

Несколько форм связи с одним обработчиком

К примеру, возьмем три формы.

Присвойте каждой форме свой уникальный id. У нас это form1, form2 и form3. Кроме того, для стилизации формы примените классы css, для отображения подсказки включите атрибуты placeholder, а для формирования темы письма добавьте скрытый input.

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

Отправка формы без перезагрузки страницы

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

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

Форма связи в процессе заполнения

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

Форма связи после нажатия кнопки «Отправить»

update: При необходимости восстановления формы после отправки данных, вы можете использовать следующее решение (вставьте выделенный код в указанное место и оберните все input в форме в div с id, например inputs):

Метод .load() загружает данные и вставляет в указанный элемент.

«#parent»id формы, в которую необходимо вставить удаленные данные.
В приведенном примере скрипта с отправкой данных форм без перезагрузки страницы, оберните в div все input. Назначьте ему id, например inputs. Этот div с вложенными полями input удаляется скриптом, на его месте появляется сообщение об отправке. Получается, что в коде остается тег form с id, этот id необходимо указать в #parent, это станет контейнером для загрузки скриптом данных формы (удаленные input).

«http://site.ru» — адрес вашей страницы с формой, откуда скрипт загрузит удаленные input. Например, если ваша форма будет находиться по адресу http://site.ru/contacts.html, вставляете этот адрес.

«#child»id блока, который содержит input. В данном случае div #inputs.

3000 — время в мс через которое восстановится код формы.

Демо

PHP обработчик

Большинство форм для передачи данных используют метод POST, это позволяет «спрятать» данные формы и не загромождать URL в адресной строке.

Данный обработчик содержит проверку метода передачи данных.

Создавая формы на страницах своего сайта, не забывайте о внедрении проверки введенных данных и методах защиты от спама.

Возникли вопросы? Давайте обсудим их в комментариях.

Демо

Как тип ввода «Отправить» создает кнопки отправки формы в HTML »

Раскрытие информации: Ваша поддержка помогает поддерживать работу сайта! Мы зарабатываем реферальный сбор за некоторые услуги, которые мы рекомендуем на этой странице. Узнать больше
Значение
Как определить тип ввода в HTML (все значения и атрибуты)
Что делает Как тип ввода создает кнопки отправки формы в HTML ?
Определяет кнопку, по которой щелкают, чтобы отправить форму.

Пример кода

  

Значение submit входного отображает кнопку «Отправить» в форме. Нажатие этой кнопки отправит данные формы.

Если вы хотите использовать изображение вместо кнопки «Отправить», используйте тип ввода изображение .

Клэр — опытный технический писатель, редактор и энтузиаст HTML.Она пишет для HTML.com и управляет контент-агентством Red Robot Media.

Браузер Поддержка отправки

Все значения типа

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

Все входные атрибуты

Имя атрибута Значения Примечания
step Задает интервал между допустимыми значениями в числовом вводе.
требуется Указывает, что поле ввода является обязательным; запрещает отправку формы и предупреждает пользователя, если обязательное поле пусто.
только для чтения Запрещает пользователю редактировать значение ввода.
заполнитель Задает текст-заполнитель в текстовом вводе.
шаблон Задает регулярное выражение, по которому проверяется значение ввода.
несколько Позволяет пользователю вводить несколько значений при загрузке файла или электронной почте.
мин. Задает минимальное значение для полей ввода числа и даты.
макс. Задает максимальное значение для полей ввода числа и даты.
список Задает идентификатор элемента , который предоставляет список предложений автозаполнения для поля ввода.
высота Задает высоту входного изображения.
formtarget Задает контекст просмотра, в котором открывается ответ от сервера после отправки формы. Для использования только с типами ввода «отправить» или «изображение».
formmethod Задает метод HTTP (GET или POST), который будет использоваться при отправке данных формы на сервер. Только для использования с типами ввода «отправить» или «изображение».
formenctype Определяет, как данные формы должны отправляться на сервер. Только для использования с типами ввода «отправить» и «изображение».
formaction Задает URL-адрес для отправки формы.Может использоваться только для type = «submit» и type = «image».
форма Задает форму, которой принадлежит поле ввода.
автофокус Указывает, что поле ввода должно быть в фокусе сразу после загрузки страницы.
accesskey Определяет сочетание клавиш для элемента.
автозаполнение Указывает, должен ли браузер пытаться автоматически завершить ввод на основе ввода данных пользователем в аналогичные поля.
граница Используется для указания границы на входе. Устарело. Вместо этого используйте CSS.
проверено Определяет, следует ли по умолчанию устанавливать флажок или переключатель формы ввода.
отключено Отключает поле ввода.
maxlength Задает максимальное количество символов, которое может быть введено в текстовый ввод.
язык Используется для обозначения языка сценариев, используемого для событий, запускаемых вводом.
имя Задает имя элемента ввода. Имя и значение каждого элемента ввода включаются в HTTP-запрос при отправке формы.
размер Задает ширину ввода в символах.
src Определяет исходный URL-адрес для ввода изображения.
тип кнопка
флажок
файл
скрыто
изображение
пароль
радио
сброс
отправить
текст
Определяет тип ввода.
значение Определяет начальное значение или выбор по умолчанию для поля ввода.

элемент кнопки (type = submit)

Специальные атрибуты

автофокус

Логическое значение, указывающее браузеру установить фокус на этот элемент управления, когда документ завершил загрузку или когда отображается диалоговое окно , в котором находится элемент управления. Если атрибут имеет значение «autofocus» или пустая строка («»), или если он просто присутствует, элемент управления должен получить фокус как можно скорее, после загрузки страницы или диалогового окна .

Пример

  
  
отключен

Логическое значение, указывающее, отключен ли элемент управления. Если атрибут принимает значение «отключен» или пустую строку («»), или если он просто присутствует, элемент управления будет отключен.

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

Пример

  

Найдите элемент:

форма

Значение атрибута id формы, с которой связан этот элемент управления.

Этот атрибут является новым в HTML 5 и помогает определять принадлежность элементов управления во вложенных или удаленных формах.

Пример

  

Имена:

форма действия

URI , указывающий местоположение сценария, ответственного за обработку данных, отправленных формой .Этот сценарий обычно пишется на серверном языке, таком как ASP , PHP , Python и т. Д.

Этот атрибут является новым в HTML 5 и, если он присутствует, переопределяет атрибут action элемента form . Это позволяет авторам предоставить одну форму с двумя или более кнопками, которые выполняют разные типы отправки.

Пример

  

Тип:

formenctype

Значение, указывающее метод кодирования, который будет использоваться для данных при отправке формы. Есть три возможных значения без учета регистра:

  • application / x-www-form-urlencoded : пробелы заменяются знаками «плюс» («+»), а специальные символы преобразуются в значения HEX . Это значение по умолчанию.
  • multipart / form-data : кодирование не выполняется. Это значение необходимо для загрузки файлов.
  • text / plain : только пробелы заменяются знаками «плюс» («+»).

Помните, что вы должны использовать значение multipart / form-data всякий раз, когда файл будет загружен в форму. Без этой конфигурации загрузка файлов завершится ошибкой.

Этот атрибут является новым в HTML 5 и, если он присутствует, переопределяет атрибут action элемента form .Это позволяет авторам предоставить одну форму с двумя или более кнопками, которые выполняют разные типы отправки.

Пример

  

Полное имя:

Изображение:

метод формы

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

  • get : данные прикрепляются к URL-адресу запроса (указанному в атрибуте action ). Пары имя-значение расположены в форме «имя = значение» и разделяются знаком амперсанда («&»). Вся эта строка добавляется к запросу URL , которому предшествует вопросительный знак («?»). Например, строка GET может выглядеть так: «form-result.php? User = john & pass = 123456»
  • пост : данные прилагаются к телу запроса.
  • диалоговое окно : специфично для форм внутри элемента диалогового окна . Указывает браузеру закрыть диалоговое окно при отправке формы. Результаты формы должны обрабатываться скриптами.

Этот атрибут является новым в HTML 5 и, если он присутствует, переопределяет атрибут action элемента form . Это позволяет авторам предоставить одну форму с двумя или более кнопками, которые выполняют разные типы отправки.

Пример

  

Город:

formtarget

Значение, указывающее, куда должны быть загружены результаты сценария, отвечающего за обработку данных.Это значение может быть именем контекста просмотра (например, значением атрибута name iframe ) или любым из следующих значений (без учета регистра):

  • _blank : в новом окне / вкладке.
  • _parent : в непосредственном родительском контексте.
  • _self : в том же контексте, который содержит форму.
  • _top : в самом верхнем контексте (самый большой родительский контекст, содержащий форму).

Этот атрибут является новым в HTML 5 и, если он присутствует, переопределяет атрибут action элемента form . Это позволяет авторам предоставить одну форму с двумя или более кнопками, которые выполняют разные типы отправки.

Пример

  

Группа:

formnovalidate

Логическое значение, указывающее браузеру не проверять данные формы при отправке.Если этот атрибут принимает значение «formnovalidate» или пустую строку («»), или если он просто присутствует, браузер должен пропустить проверку формы во время отправки.

Этот атрибут является новым в HTML 5 и, если он присутствует, переопределяет атрибут action элемента form . Это позволяет авторам предоставить одну форму с двумя или более кнопками, которые выполняют разные типы отправки.

Этот атрибут является частью Constraint Validation API , новой функции, которая позволяет авторам обеспечивать проверку form с минимальным вмешательством программирования.[a-zA-Z] [a-zA-Z0-9 -_ \.] {3,15} $ "title =" Правильное имя пользователя должно начинаться с буквы, содержать буквы, цифры, оценки и остановки, а также иметь от 3 до 15 символов "требуется>

название

Имя элемента управления. Это имя будет отправлено браузером агенту обработки вместе с содержимым атрибута value .Оба атрибута вместе будут соответствовать паре имя-значение, которая будет использоваться для обработки данных формы.

В настоящее время значение isindex , ранее использовавшееся особым образом в некоторых браузерах и включенное в стандарт HTML , в этом атрибуте не допускается.

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

Пример

  

Имя пользователя:

тип

Значение, указывающее ожидаемое поведение кнопки. Существует четыре возможных значения (без учета регистра), которые будут определять действие по умолчанию, выполняемое кнопкой при ее нажатии:

  • кнопка: с элементом управления не связано действие по умолчанию.Поведение кнопок этого типа обычно обеспечивается сценарием.
  • сброс: элементы управления связанной формы сбрасываются до исходных значений.
  • submit: связанная форма отправлена. Это глухая ценность.
  • menu: контекстное меню, связанное с этой кнопкой, развернуто.

Если этот атрибут отсутствует, кнопка действует как кнопка «отправить».

Пример

  
  
значение

Значение для элемента управления.Это значение будет отправлено браузером агенту обработки вместе с содержимым атрибута name . Оба атрибута вместе будут соответствовать паре имя-значение, которая будет использоваться для обработки данных формы.

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

Пример

  

Модель:

сообщений асинхронной формы с парой строк ванильного JavaScript • PQINA

В этом руководстве мы напишем крошечный обработчик событий JavaScript, который будет публиковать наши HTML-формы, используя fetch вместо классической записи формы синхронного перенаправления.Мы создаем решение на основе стратегии прогрессивного улучшения: если JavaScript не загружается, пользователи все равно смогут отправлять наши формы, но если доступен JavaScript, отправка формы будет намного более плавной. При создании этого решения мы изучим API-интерфейсы JavaScript DOM, удобные структуры HTML и темы, связанные с специальными возможностями.

Начнем с настройки формы.

Настройка HTML

Давайте создадим форму подписки на информационный бюллетень.

В нашей форме будет необязательное поле name и поле email , которые мы помечаем как обязательные.Мы назначаем обязательный атрибут нашему полю электронной почты, чтобы форму нельзя было опубликовать, если это поле пусто. Кроме того, мы установили тип поля email , который запускает проверку электронной почты и показывает красивую раскладку клавиатуры электронной почты на мобильных устройствах.

  
Имя Электронное письмо

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

  

  
    
     Успешная подписка! 
  
  
    

Успешная подписка!

Давайте быстро вернемся к нашему тегу

, чтобы внести небольшие улучшения.

Если наша таблица стилей каким-то образом не загружается, она в настоящее время отображается следующим образом:

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

.

  
  
Имя
Электронное письмо

Теперь каждое поле отображается с новой строки.

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

  

Незначительные усилия, приводящие к большому увеличению UX и доступности.Замечательный!

Когда наша форма закончена, давайте напишем немного JavaScript.

Написание обработчика отправки формы

Мы напишем сценарий, который превращает все формы на странице в асинхронные.

Нам не нужен доступ ко всем формам на странице, чтобы настроить это, мы можем просто прослушивать событие 'submit' в документе и обрабатывать все сообщения формы в одном обработчике событий. Целью события всегда будет форма, которая была отправлена, поэтому мы можем получить доступ к элементу формы с помощью e.цель

Чтобы предотвратить отправку классической формы, мы можем использовать метод preventDefault для объекта события , это предотвратит действия по умолчанию, выполняемые браузером.

Если вы хотите обрабатывать только одну форму, вы можете сделать это, прикрепив прослушиватель событий к этому конкретному элементу формы.

  document.addEventListener ("отправить", (e) => {
  
  const form = e.target;

  
  e.preventDefault ();
});  

Хорошо, теперь мы готовы отправить данные формы.

Это действие состоит из двух частей: части отправки и части данных.

Для отправки данных мы можем использовать fetch API, для сбора данных формы мы можем использовать супер удобный API под названием FormData .

  document.addEventListener ("отправить", (e) => {
  
  const form = e.target;

  
  fetch (form.action, {
    метод: form.method,
    тело: новые FormData (форма),
  });

  
  e.preventDefault ();
});  

Да, я не шучу, это просто.

Первым аргументом fetch является URL-адрес, поэтому мы передаем свойство form.action , которое содержит subscribe.php . Затем мы передаем объект конфигурации, который содержит метод для использования, который мы получаем из свойства form.method ( POST ). Наконец, нам нужно передать данные в свойстве body . Мы можем явно передать элемент form в качестве параметра в конструктор FormData , и он создаст для нас объект, напоминающий сообщение классической формы и отправленный как multipart / form-data .

Майкл Шарнагл предложил переместить вызов preventDefault () в конец, чтобы гарантировать, что классическая отправка будет запрещена только в том случае, если выполняется весь наш JavaScript.

Готово! В паб!

Конечно, есть кое-что, что мы забыли, в основном это был чрезвычайно счастливый поток, так что держите этих лошадей и поставьте эту пинту. Как мы справляемся с ошибками подключения? Как насчет уведомления пользователя об успешной подписке? А что происходит при запросе страницы подписки?

Кейсы Edge

Давайте сначала уведомим пользователя об успешной подписке на информационный бюллетень.

Отображение состояния успеха

Мы можем сделать это, вытащив сообщение на странице subscribe.php и показав его вместо элемента формы. Давайте продолжим сразу после оператора fetch и обработаем случай разрешения вызова fetch .

Во-первых, нам нужно превратить ответ в ответ на основе текста . Затем мы можем превратить этот текстовый ответ в реальный HTML-документ с помощью DOMParser API, мы говорим ему проанализировать наш текст и рассматривать его как text / html , мы возвращаем этот результат, чтобы он был доступен в следующем , затем

Теперь у нас есть HTML-документ для работы ( doc ), и мы наконец можем заменить нашу форму статусом успеха.Мы скопируем body.innerHTML в наш result.innerHTML , а затем заменим нашу форму вновь созданным элементом результата. И последнее, но не менее важное: мы перемещаем фокус на элемент результата, чтобы он был прочитан пользователями программ чтения с экрана, а пользователи клавиатуры могли возобновить навигацию с этого места на странице.

  document.addEventListener ("отправить", (e) => {
  
  const form = e.target;

  
  fetch (form.action, {
    метод: form.method,
    тело: новые FormData (форма),
  })
    
    .затем ((res) => res.text ())

    
    .then ((текст) => новый DOMParser (). parseFromString (текст, "текст / html"))

    
    .then ((doc) => {
      
      const result = document.createElement ("div");
      result.innerHTML = doc.body.innerHTML;

      
      result.tabIndex = -1;

      
      form.parentNode.replaceChild (результат, форма);

      
      result.focus ();
    });

  
  e.preventDefault ();
});  

Проблемы с подключением

Если наше соединение не удается, вызов fetch будет отклонен, что мы можем обработать с помощью ловушки

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

  

С помощью атрибута hidden мы скрыли

от всех.Мы добавили в абзац role = "alert" , это заставляет программы чтения с экрана читать вслух содержание абзаца, как только он становится видимым.

Теперь займемся стороной JavaScript.

Код, который мы помещаем в обработчик отклонения fetch ( catch ), выберет наш абзац предупреждения и покажет его пользователю.

  document.addEventListener ("отправить", (e) => {
  
  const form = e.target;

  
  fetch (form.action, {
    метод: форма.метод
    тело: новые FormData (форма),
  })
    
    .then ((res) => res.text ())

    
    .then ((текст) => новый DOMParser (). parseFromString (текст, "текст / html"))

    
    .then ((doc) => {
      
      const result = document.createElement ("div");
      result.innerHTML = doc.body.innerHTML;

      
      result.tabIndex = -1;

      
      form.parentNode.replaceChild (результат, форма);

      
      result.focus ();
    })
    .catch ((err) => {
      
      form.querySelector ("[роль = предупреждение]").скрытый = ложный;
    });

  
  form.querySelector ("[роль = предупреждение]"). hidden = true;

  
  e.preventDefault ();
});  

Мы выбираем наш абзац предупреждения с помощью селектора атрибутов CSS [role = alert] . Имя класса не нужно. Я не говорю, что он может нам не понадобиться в будущем, но иногда выбор по атрибуту — это нормально.

Я думаю, что наши крайние случаи покрыты, давайте немного поправим это.

Блокировка полей при загрузке

Было бы неплохо, если бы форма блокировала все поля ввода во время отправки на сервер.Это не позволяет пользователю нажимать кнопку отправки несколько раз, а также редактировать поля, ожидая завершения процесса.

Мы можем использовать свойство form.elements , чтобы выбрать все поля формы, а затем отключить каждое поле.

Если у вас есть

в вашей форме, вы можете отключить набор полей, и это отключит все поля внутри него

  document.addEventListener ("отправить", (e) => {
  
  const form = e.цель;

  
  fetch (form.action, {
    метод: form.method,
    тело: новые FormData (форма),
  })
    
    .then ((res) => res.text ())

    
    .then ((текст) => новый DOMParser (). parseFromString (текст, "текст / html"))

    
    .then ((doc) => {
      
      const result = document.createElement ("div");
      result.innerHTML = doc.body.innerHTML;

      
      result.tabIndex = -1;

      
      form.parentNode.replaceChild (результат, форма);

      
      result.focus ();
    })
    .catch ((err) => {
      
      форма.querySelector ("[роль = предупреждение]"). hidden = false;
    });

  
  Array.from (form.elements) .forEach ((field) => (field.disabled = true));

  
  form.querySelector ("[роль = предупреждение]"). hidden = true;

  
  e.preventDefault ();
});  

form.elements необходимо превратить в массив с использованием Array.from , чтобы мы перебрали его с помощью forEach и установили атрибут disable на true для каждого поля.

Теперь мы попали в неприятную ситуацию, потому что если fetch завершится неудачно и мы закончим в нашем catch , все поля формы будут отключены, и мы больше не сможем использовать нашу форму.Давайте решим эту проблему, добавив тот же оператор в обработчик catch и , но вместо отключения полей мы включим поля.

  .catch (err => {

  
  Array.from (form.elements) .forEach (field => field.disabled = false);

  
  form.querySelector ('[роль = предупреждение]'). hidden = false;

});  

Хотите верьте, хотите нет, но мы еще не выбрались из леса. Поскольку мы отключили все элементы, браузер переместил фокус на элемент .Если fetch не работает, мы попадаем в обработчик catch , включаем наши элементы формы, но пользователь уже потерял свое местоположение на странице (это особенно полезно для пользователей, использующих клавиатуру, или, опять же, для пользователей, которые приходится полагаться на программу чтения с экрана).

Мы можем сохранить текущий сфокусированный элемент document.activeElement , а затем восстановить фокус с помощью element.focus () позже, когда мы активируем все поля в обработчике catch и .Пока мы ждем ответа, мы переместим фокус на сам элемент формы.

  document.addEventListener ("отправить", (e) => {
  
  const form = e.target;

  
  fetch (form.action, {
    метод: form.method,
    тело: новые FormData (форма),
  })
    
    .then ((res) => res.text ())

    
    .then ((текст) => новый DOMParser (). parseFromString (текст, "текст / html"))

    
    .then ((doc) => {
      
      const result = document.createElement ("div");
      result.innerHTML = doc.body.innerHTML;

      
      result.tabIndex = -1;

      
      form.parentNode.replaceChild (результат, форма);

      
      result.focus ();
    })
    .catch ((err) => {
      
      Array.from (form.elements) .forEach ((field) => (field.disabled = false));

      
      lastActive.focus ();

      
      form.querySelector ("[роль = предупреждение]"). hidden = false;
    });

  
  const lastActive = document.activeElement;

  
  form.tabIndex = -1;
  form.focus ();

  
  Array.from (form.elements) .forEach ((field) => (field.отключено = правда));

  
  form.querySelector ("[роль = предупреждение]"). hidden = true;

  
  e.preventDefault ();
});  

Я признаю, что это не несколько строк JavaScript, но, честно говоря, там много комментариев.

Отображение состояния занятости

В завершение было бы неплохо показать состояние занятости, чтобы пользователь знал, что что-то происходит.

Обратите внимание, что, хотя fetch является необычным, в настоящее время он не поддерживает установку тайм-аута, а также не поддерживает события прогресса, поэтому для состояний занятости, которые могут занять некоторое время, не будет стыдно использовать XMLHttpRequest , было бы даже неплохо.

С учетом сказанного пришло время добавить класс к нашему предупредительному сообщению (ЧЕРТ, ВЫ ПРОШЛИ МЕНЯ!). Назовем его status-failure и добавим рядом с ним наш занятый абзац.

  

Ошибка подключения, попробуйте еще раз.

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

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

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

  document.addEventListener ("отправить", (e) => {
  
  const form = e.target;

  
  const statusBusy = form.querySelector (". статус-занято");
  const statusFailure = form.querySelector (". статус-сбой");

  
  fetch (form.action, {
    метод: форма.метод
    тело: новые FormData (форма),
  })
    
    .then ((res) => res.text ())

    
    .then ((текст) => новый DOMParser (). parseFromString (текст, "текст / html"))

    
    .then ((doc) => {
      
      const result = document.createElement ("div");
      result.innerHTML = doc.body.innerHTML;

      
      result.tabIndex = -1;

      
      form.parentNode.replaceChild (результат, форма);

      
      result.focus ();
    })
    .catch ((err) => {
      
      Array.from (form.elements) .forEach ((field) => (field.отключено = ложь));

      
      lastActive.focus ();

      
      statusBusy.hidden = false;

      
      statusFailure.hidden = false;
    });

  
  const lastActive = document.activeElement;

  
  statusBusy.hidden = false;
  statusBusy.tabIndex = -1;
  statusBusy.focus ();

  
  Array.from (form.elements) .forEach ((field) => (field.disabled = true));

  
  statusFailure.hidden = true;

  
  e.preventDefault ();
});  

Вот и все!

Мы пропустили часть CSS при разработке интерфейса. Вы можете использовать CSS-фреймворк или применять свои собственные стили.Сам по себе пример должен стать отличной отправной точкой для дальнейшей настройки.

И последнее. Не удаляйте контур фокуса.

Заключение

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

Надеюсь, мы затронули пару новых API и методологий, которые вы можете использовать. Дайте мне знать, если у вас возникнут какие-либо вопросы!

HTML-форма: как отправлять данные с помощью HTML

Формы используются в веб-разработке для взаимодействия с пользователем. Сведения о физическом лице можно получить с помощью форм. Мы используем тег формы для создания форм в HTML. Мы можем использовать разные поля ввода для взаимодействия с пользователями. Эти поля ввода помещаются в тег HTML-формы. Элемент ввода может отображаться несколькими способами.Это зависит от атрибута типа. Это может быть текстовое поле, флажок, текстовая область и многое другое. Тег формы сам по себе имеет несколько атрибутов. Атрибут действия используется для указания места, куда будут отправлены данные формы. Атрибут метода используется, чтобы указать, как отправлять данные формы.

Темы в этой статье

Шаблоны HTML-форм

Ниже приведен пример формы HTML, которую можно использовать для регистрации.

 

 

Зарегистрироваться

Имя:


Фамилия:


Электронная почта:


Пароль:


Подтвердите пароль:


Пол:
Мужской Женский Другое

Вывод:

В приведенной выше форме я использовал разные типы полей ввода.Мы обсудим эти различные типы полей ввода позже в этой статье. Я также использовал обязательный атрибут во многих тегах ввода выше. Мы используем его для проверки. Мы также обсудим это позже в статье.

Следующий код показывает HTML-форму страницы входа.

 

 

Войти

Электронная почта:


Пароль:


Форма радио

Существуют различные типы ввода, которые мы можем использовать для создания HTML-форм.Одно из них — радио. Радио — один из наиболее часто используемых типов ввода. Вы когда-нибудь замечали несколько круглых вариантов при регистрации или подписке онлайн? Например, при выборе пола. Это называется радио. Ниже приведен пример типов радио.

 

Пол:
Мужской Женский Другое

В приведенном выше примере есть три переключателя.Вы можете выбрать только один из них. Атрибут value указывает значение каждой радиокнопки. Мы также можем использовать атрибут checked для первоначального выбора переключателя. В следующем примере есть отмеченный атрибут.

 

Пол:
Male Женский Другое

В приведенном выше примере мужскому переключателю присваивается отмеченный атрибут.

Проверки

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

 

 

Войти

Имя:


Фамилия:


Электронная почта:




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

Мы также можем использовать атрибут maxlength в поле ввода, если тип — текст. Атрибут maxlength указывает максимальную длину, разрешенную для поля ввода. В следующем коде есть два поля ввода с текстом типа. Оба имеют максимальную длину десять. Это означает, что мы не можем ввести более десяти символов в эти поля ввода.

 

Имя:


Фамилия:

Мы должны использовать Javascript для проверки сложных форм.

Типы ввода формы

Мы можем использовать различные типы ввода при создании формы. Форма может состоять из нескольких полей ввода разных типов. Я объясню некоторые из самых основных и часто используемых типов ввода.

Текст:

Наиболее часто используемый тип ввода — текст. Мы можем использовать текстовый тип, когда данные, которые необходимо ввести в поле ввода, — это текст. Он используется для полей ввода, таких как имя, отчество, фамилия, адрес и т. Д.Атрибут value может использоваться для присвоения полю начальное значение. В следующем коде есть два поля ввода с начальными значениями.

 

Имя:


Фамилия:



Электронная почта:

Поля ввода электронной почты широко распространены по всему Интернету.Каждый веб-сайт запрашивает электронное письмо, когда мы пытаемся зарегистрироваться. Для электронной почты ввод имеет отдельный тип. Если поле ввода имеет адрес электронной почты в качестве своего типа, вы должны ввести действующий адрес электронной почты, иначе будет отображаться сообщение. В следующем примере поле электронной почты имеет тип электронной почты. Если мы попытаемся отправить, не указав действующий адрес электронной почты, появится сообщение об ошибке.

 

Имя:


Фамилия:


Электронная почта:


Он принимает только действительный адрес электронной почты.

Пароль:

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

 

 

Войти

Электронная почта:


Пароль:



Флажок:

Мы использовали тип радио для выбора одного варианта из множества.Что, если мы хотим выбрать несколько из них? Мы используем флажок в качестве типа для этого. Как и в случае с радио, мы также можем изначально установить флажок, даже больше, чем один. В следующем примере четыре флажка, два из которых уже отмечены.

 

BMW

Audi

Феррари

Mercedes

Подобно типу радио, нам также нужно присвоить значение каждому флажку.

Отправить:

Форма неполная без кнопок. Во входных тегах доступны кнопки трех типов. Самый важный из них — Отправить. Мы можем использовать тип отправки для создания кнопки, которая при нажатии отправляет данные формы по URL-адресу, указанному в атрибуте действия тега формы. Значение, присвоенное этому входу, — это текст, который появляется на кнопке.

 

Имя:
Фамилия:

Помимо отправки, мы также можем использовать кнопку и сброс в качестве типа.Тип кнопки создает кнопку, которую можно щелкнуть, а тип сброса инициализирует значения всех полей ввода исходными значениями.

Скрытый

Тип ввода отличается от любого другого типа ввода. Когда мы используем скрытый тип в поле ввода, это поле ввода не появляется на экране. Тогда какая от этого польза? Он используется веб-разработчиками для обновления базы данных при отправке формы. Пользователь не знает об этом поле ввода. Следующая форма имеет два поля ввода.Первый текстовый, второй — скрытый.

Этот тип ввода аналогичен комментарию HTML. Но в скрытом поле значение такого поля передается внутри формы.

 
<тело
Имя:

Второе поле ввода не видно.

Вывод:


TextArea

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

 

<форма>
  




 

Вывод:

Мы также можем инициализировать текстовую область, написав что-нибудь внутри тегов textarea.

Выбрать

Подобно тегу textarea, Select не является типом ввода. Это тег, который также часто используется в HTML-формах. Тег Select — это не что иное, как раскрывающийся список с различными вариантами выбора. Мы можем выбрать только один вариант. Тег select используется для создания раскрывающегося списка, а тег параметра — для создания параметра внутри него. Мы можем использовать любое количество тегов option внутри тега select. В следующем коде есть тег выбора с четырьмя параметрами.

 

Выберите:
<выбор>

Вывод:

Мы должны вставить атрибут значения в каждый тег option, потому что он помогает скрытно, когда мы используем Javascript.

Действие формы

Тег формы имеет атрибут действия. Этот атрибут определяет URL-адрес или файл, в который должны быть отправлены данные формы при нажатии на отправку. Помимо атрибута действия, есть еще один атрибут, называемый методом. Атрибут метода может иметь значение GET или POST. Он определяет, как отправить данные формы.

Когда мы используем метод GET, данные формы отправляются как переменная URL. В следующем HTML-файле есть форма входа.

 

Имя:


Электронная почта:


Вывод:

Атрибут действия содержит файл PHP action_get. При нажатии кнопки отправки данные формы отправляются в файл action_get.php.

 

Добро пожаловать  
Ваш адрес электронной почты:

Вывод:

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

Вывод:

Метод post не отправляет данные через URL. Вместо этого данные формы встроены в HTTP-запрос. Атрибут действия следующей формы содержит файл PHP action_post.

 

Имя:


Электронная почта:


Вывод:

Следующий файл — action_post.php

 

Добро пожаловать  
Ваш адрес электронной почты:

Вывод:

Обратите внимание на адресную строку после отправки формы. Мы видим, что в URL-адресе нет значений.


Пример PHP для чтения отправленной формы

В вышеприведенной теме мы наблюдаем разницу между GET и POST.Хотя в адресной строке разница была, но вывод остался прежним. В файле action_get.php я использую следующий код для печати данных формы.

 Добро пожаловать  
Ваш адрес электронной почты:

В файле action_post.php я использовал следующий код.

 Добро пожаловать  
Ваш адрес электронной почты:

Мы видим, я отдельно напечатал имя и адрес электронной почты в обоих файлах.Это нормально, когда есть только два поля ввода, но что делать, если в HTML-форме несколько полей ввода? Печать данных каждого поля ввода приведет к получению кода, состоящего из слишком большого количества строк. Более того, другим будет сложно анализировать код. Чтобы решить эту проблему, мы можем использовать цикл Foreach, предоставляемый PHP. Мы можем использовать цикл foreach для перебора полей ввода. В следующем примере представлена ​​HTML-форма регистрации с различными полями ввода.

 

Имя:


Отчество:


Фамилия:


Электронная почта:


Пол:
Мужской Женский Другое

Вывод:

Сообщение о действии.php выглядит следующим образом:

 

 $ value) {
echo "$ key is $ value 
"; } ?>

Вывод:

Соблюдайте приведенный выше код. В цикле Foreach используется $ _POST, потому что я указал метод формы как POST. Если мы хотим использовать метод GET, напишите $ _GET вместо $ _POST. Ключ $ представляет имя каждого поля, а значение $ представляет значение каждого поля.echo используется для печати данных на экране.

Заключение

HTML-формы

— один из лучших способов взаимодействия с пользователем. Мы можем использовать эти формы для отправки данных или их извлечения. Есть множество типов ввода, которые мы можем использовать для создания формы. Ранее я уже объяснял несколько общих и важных типов.

Вы также можете настроить цвета шрифта или цвета фона в полях формы. Изображения также можно использовать как кнопки.

Мы также можем использовать Javascript для обработки форм перед их публикацией за кулисами.Например, мы можем объединить строку или проанализировать числа перед отправкой формы.

HTML-формы

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

Обработка ввода в PHP

Обработка ввода в PHP

Обработка пользовательского ввода в PHP

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

HTML-формы

Формы обозначаются в документе HTML с помощью тега заполнения формы:


... Содержание формы ...

URL-адрес, указанный после ACTION, является URL-адресом вашей программы. МЕТОД — это средство передачи данных из формы в программу. В этом примере мы использовали метод «POST», который является рекомендуемым. Есть еще один метод, называемый «GET», но с этим методом связаны общие проблемы. Оба будут рассмотрены в следующем разделе.

В форме может быть что угодно, кроме другой формы.Для создания объектов пользовательского интерфейса используются следующие теги: INPUT, SELECT и TEXTAREA.

Тег INPUT определяет простой интерфейс ввода:






Что даст следующее:

Различные атрибуты в основном говорят сами за себя.ТИП — это разновидность представляемого вами входного объекта. Допустимые типы включают «текст», «пароль», «флажок», «радио», «отправить», «сбросить» и «скрытый». Каждый ввод, кроме «submit» и «reset», имеет ИМЯ, которое будет связано со значением, возвращаемым во вводе в программу. Это не будет видно пользователю (если он не прочитает исходный HTML-код). Остальные поля будут объяснены типами:

«текст» — относится к простому текстовому полю ввода. VALUE относится к тексту по умолчанию в текстовом поле, SIZE представляет визуальную длину поля, а MAXLENGTH указывает максимальное количество символов, которое допускает текстовое поле.Для всего этого есть значения по умолчанию (ничего, 20, без ограничений).

«пароль» — то же, что и обычное поле ввода текста, но вводимые символы скрыты.

«флажок» — относится к переключателю, который независимо включен или выключен. ЗНАЧЕНИЕ относится к строке, отправляемой на сервер, когда кнопка отмечена (не отмеченные флажки игнорируются). Значение по умолчанию — «включено».

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

«отправить» и «сбросить» — это кнопки внизу большинства форм, которые вы увидите, чтобы отправить форму или очистить ее. У них не обязательно быть ИМЯ, а ЗНАЧЕНИЕ относится к метке на кнопке. Имена по умолчанию — «Отправить запрос» и «Сброс» соответственно.

«скрытый» — этот ввод невидим с точки зрения пользовательского интерфейса (хотя не обманывайтесь, думая, что это какая-то функция безопасности — «скрытые» поля легко найти, просматривая источник документа или исследуя URL-адрес для метода GET).Он просто создает привязку атрибута / значения без необходимости действий пользователя, которые прозрачно передаются при отправке формы.

Второй тип интерфейса — это интерфейс SELECT, который включает всплывающие меню и таблицы с прокруткой. Вот примеры обоих:

Что даст нам:

Опция 1 вариант 2 вариант 3 вариант 4 вариант 5 вариант 6 вариант 7 Опция 1 вариант 2 вариант 3 вариант 4 вариант 5 вариант 6 вариант 7

Атрибут SIZE определяет, является ли это меню или прокручиваемым списком.Если он равен 1 или отсутствует, по умолчанию используется всплывающее меню. Если он больше 1, вы увидите прокручиваемый список с элементами SIZE. Параметр MULTIPLE, который заставляет выбор быть прокручиваемым списком, означает, что может быть выбрано более одного значения (по умолчанию только одно значение может быть выбрано в прокручиваемом списке).

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

Последний тип интерфейса — это интерфейс TEXTAREA:

У Мэри был маленький ягненок. Ягненок? Ягненок! У Мэри был маленький ягненок. Это шерсть была бела как снег.

Как обычно, ИМЯ — это символическая ссылка, к которой будет привязан ввод при передаче в программу. Значения ROWS и COLS — это видимый размер поля. В текстовую область можно ввести любое количество символов.

Текст текстовой области по умолчанию вводится между тегами. Предположительно соблюдаются пробелы (как между тегами

 HTML), включая новую строку после первого тега и перед последним тегом. 

Обработка ввода на стороне сервера — PHP

PHP может обрабатывать запросы как GET, так и POST.Анализ ввода выполняется за вас с помощью PHP, поэтому вы полностью отделены от фактического формата входных данных.

Сценарии PHP

обычно представляют собой комбинацию кода HTML и PHP, заключенную в теги , и выполняются в ответ на HTTP-запросы от клиента. Давайте посмотрим на очень простую программу PHP, традиционную HelloWorld:

печать "";
печать «<заголовок>»;
$ title = "Привет, мир";
print " $ title ";
печать "";
print "";
print "

$ title

";

$ param = $ _GET ["параметр"];
if ($ param) {
print "Спасибо за прекрасную привязку param = '$ param'.";
}

печать "";
печать "";

?>

Мы снова обсудим моменты этого кода в разделе, посвященном выводам PHP, но пока мы сосредоточимся на стороне ввода. Переменная $ _GET - это ассоциативный массив, содержащий параметры из клиентского запроса. Значения параметров, переданных из HTML FORM, можно получить, обратившись к элементу массива, соответствующему имени параметра.Именно с помощью этих механизмов вы можете получить любое из значений, введенных или неявных в форме. Как можно заключить из приведенного выше примера, PHP возвращает значение null, если параметр, имя которого вы запрашиваете, не имеет значения. Привязки непроверенных кнопок не передаются в сообщениях GET или POST. Вы можете проверить значение null, чтобы определить, когда кнопки выключены. PHP также содержит функции для проверки ключей массива, такие как isset.

Переменная $ _POST содержит параметры из сообщения POST. $ _REQUEST содержит все содержимое массивов $ _GET , $ _POST и $ _COOKIE . Обязательно ознакомьтесь с документацией PHP на предмет предостережений и ограничений при использовании этих трех аргументов. Например, значение $ _GET может быть не более 100 символов.

Возврат вывода пользователю

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




<? Php print "$ title"; ?>


$ param = $ _GET ["param"];
if ($ param) {
print "Спасибо за прекрасную привязку param = '$ param'.";
}
?>


Обратите внимание, что переменная $ title все еще доступна в последующих блоках кода .

Вы можете предоставить отдельные HTML-формы и PHP-код для обработки. В качестве альтернативы (или дополнительно) вы можете интегрировать FORM в свой PHP-код, создавая FORM на лету в вашей программе, которая будет вызываться при вызове GET или POST клиентом.Например, вы можете включить поле ввода на страницу вывода, чтобы пользователь мог отправить другой запрос, аналогично тому, как поисковые системы Интернета включают поле запроса на страницу результатов.

Обработка специальных символов

Специальные символы, такие как &, <и>, необходимо экранировать как & amp ;, & lt; и & gt; соответственно в тексте HTML (подробнее см. Учебное пособие W3School по HTML). Более того, специальные символы, появляющиеся в URL-адресах, необходимо экранировать иначе, чем когда они появляются в тексте HTML.Например, если вы связываете текст со специальными символами и хотите встроить их в расширенные URL-адреса в качестве значений параметров, вам необходимо экранировать их: преобразовать пробел в + или% 20, преобразовать & в% 26, преобразовать = в% 3D, преобразовать от% до% 25 и т. д. (Как правило, любой специальный символ может быть экранирован знаком процента, за которым следует шестнадцатеричное значение ASCII символа.) Важно: НЕ экранируйте символ &, который фактически разделяет параметры! Будьте осторожны, чтобы не перепутать escape-строки для текста HTML со строками для URL-адресов.

В PHP вы не должны (и не должны) выполнять эти преобразования вручную. PHP содержит множество встроенных функций для синтаксического анализа, кодирования и декодирования HTML и URL. Просмотрите документацию PHP для получения дополнительной информации.

Пещера программирования

Есть два способа отправить данные непосредственно в программу CGI: GET и POST.

Данные GET состоят из параметров, указанных в URL-адресе.HTML-формы отправляют данные таким образом, когда в форме указан метод «get».

POST в основном означает любой метод отправки данных, который не является простым GET.

Давайте взглянем на сценарий PHP, который извлекает данные GET и отображает результаты в виде HTML.


src = "http://pagead2.googlesyndication.com/pagead/show_ads.js">

PHP Get: получение данных в PHP с помощью ассоциативного массива GET

«Получить» данные появляются в вашем PHP-скрипте в ассоциативном массиве с именем $ GET .

Следующий сценарий показывает, как можно получить определенные параметры с помощью $ GET; мы также перебираем массив $ _GET и показываем все значения параметров.


  PHP Получить результаты  



 $ value) {
    echo $ key, '=>', $ value, "
n"; } // Показать конкретное значение. $ id = $ _GET ['идентификатор']; if ($ id) { echo '

ID:', $ id, "
n"; } еще { echo '

Нет параметра ID.

'; } ?>

Если мы получим доступ к указанной выше странице по следующему URL-адресу (со скриптом, запущенным на localhost)

http: //localhost/test.php? Id = до свидания и режим = запустить

.... мы получаем следующий HTML-вывод.

id => до свидания
режим => запустить

ID: до свидания


 

Отправка данных GET с помощью HTML-форм

Мы также можем вызвать приведенный выше сценарий, используя форму в HTML. Вот простая HTML-форма. Обратите внимание, что для формы "method" установлено значение "get".



 Простая форма 




Когда мы открываем эту форму в браузере, мы получаем текстовое поле и кнопку. Мы введем «привет» в текстовое поле и нажмем ОК:

Наш PHP-скрипт теперь отображает следующее:

ввод => привет

Параметр ID отсутствует.

Значение текстового поля формы (названное 'input') появилось в ассоциативном массиве $ _GET.

Если вы хотите отправить много данных в форме или не хотите, чтобы данные формы отображались в URL-адресе, вам следует использовать POST вместо GET.

PHP Post: получение данных POST с помощью PHP

Данные публикации отображаются в вашем PHP-скрипте в ассоциативном массиве $ _POST.

В следующей HTML-форме я изменил метод get на post. Я также добавил скрытый элемент управления вводом с именем id.



 Простая форма 




Я изменил test.php, чтобы посмотреть на ассоциативный массив $ POST вместо $ GET .


  PHP Получить результаты  



 $ value) {
    echo $ key, '=>', $ value, "
n"; } // Показать конкретное значение.$ id = $ _POST ['идентификатор']; if ($ id) { echo '

ID:', $ id, "
n"; } еще { echo '

Без параметра ID

'; } ?>

Введите одуванчик в HTML-форму и нажмите ОК.

Новый сценарий PHP отображает следующее:

id => 1234
input => одуванчик

ID: 1234


 

HTML-форма с текстом типа ввода, паролем, радио, флажком, раскрывающимся списком выбора, кнопкой

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

Элементы, используемые в HTML-форме : тег формы как родительский, input , textarea, , select , button и label .

Элементы HTML-формы

  1. Тег HTML-формы
  2. Тег ввода
  3. Пароль типа ввода
  4. Файл входного типа
  5. Кнопки радио
  6. Флажок
  7. Выбрать раскрывающийся список
  8. Textarea
  9. Кнопка
  10. Fieldset

Тег HTML-формы

Тег формы определяет форму , и в этом теге есть атрибут действия , который сообщает форме, куда будет отправлено ее содержимое при отправке.

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

Создать HTML-форму

Форма построена внутри тега

.См. Код ниже

 

/* Содержание */

  

Атрибуты формы

Атрибуты HTML-формы
Атрибут Значения Использовать
метод получить или отправить http get метод отправить данные формы, но отображается в url.Сообщение
содержит данные в теле. более безопасен, так как данные не видны пользователю по URL-адресу
действие путь бэкэнд-файл, собирающий данные формы
наименование любое имя наименование формы контроля

Элемент ввода

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


Атрибуты в элементе ввода

Тип
Имя атрибута значений Использовать
тип текст, пароль, файл, радио, флажок, кнопка, отправить и сбросить определяет тип входа управления.
размер значение по умолчанию - 20 изменить размер элемента управления вводом
tabindex любое числовое значение используется для определения последовательности, которой следует пользователь при навигации с помощью вкладки клавиши
значение любое возможное значение установить значение по умолчанию для управления вводом
макс. Длина n цифр установить максимальное количество символов
отключен отключенный элемент управления вводом или тег fieldset
проверено Установите флажок или переключатель
кратно Используется в файле типа ввода для загрузки нескольких файлов

Текст типа ввода

Текст типа ввода - это общий элемент ввода для имени, фамилии, страны, чисел и символов.Тип ввода по умолчанию - текст. Даже если мы пропустим атрибут типа в элементе ввода, тип ввода по умолчанию - текст. Но все равно рекомендуется определять атрибут типа в элементе ввода .

Этикетка

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

Ввод в этикетке
 


  
Вход за пределами метки
 


 

  

Тип ввода текста со значением

Атрибут значения

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

 
<форма>
    
    

    
    

  

Максимальная длина

maxlength атрибут используется для ограничения количества символов в текстовом поле. maxlength Значение - это число. Атрибут Maxlength полезен для проверки формы.

Вход с максимальной длиной

 
<форма>






  

Тип ввода Пароль

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

 
<форма>
    
    


  

Тип ввода Файл

Файл типа ввода позволяет пользователю выбирать файл из своей системы.Это можно использовать для загрузить изображение , загрузить резюме, загрузить видео или аудио и т. Д.

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

 
<форма>
    
    

  

Файл входного типа с несколькими

 
<форма>
    
    

  


Радиокнопки

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

Радиокнопка для выбора пола

Радиокнопка для нескольких вопросов


Флажок

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

Флажок формы

 


  

Чекбокс с отключенным

Checbox также может иметь отключенный атрибут .Флажок отключен не может быть отмечен, означает, что установленный флажок останется установленным, а снятый флажок останется снятым. См. Пример

.

Флажок с отметкой

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


Выбрать раскрывающийся список

выберите или раскрывающийся список выбора используется для выбора одного или нескольких вариантов в раскрывающемся списке. Выбор параметров являются фиксированными, поэтому используемый может выбрать только данный вариант или параметры. Для выбора города, страны, даты, месяца, года и т. Д. Используется Select Dropdown .

Выберите пример раскрывающегося списка

Текущий город проживания: --Выберите город - Нью-Йорк, Чикаго, Лос-Анджелес, Вашингтон, округ Колумбия,
 
    <выбор>
        <опция выбрана отключена> - Выбрать город - 
        
        
        
        
    
  

Выбор с помощью Optgroup

Элемент Optgroup используется для группировки нескольких опций в раскрывающемся списке выбора.Имя optgroup устанавливается с помощью атрибута label в optgroup.

Текущий город проживания: --Выберите город - Нью-ДелиКолкатаМумбаиЧеннаиНоидаГурграмФаридабадГазиабад

 
<выбор>
    <опция выбрана отключена> - Выбрать город - 
    
        
        
        
        
    
    
        
        
        
        
    

  

Несколько атрибутов в выборе

Несколько атрибутов используется в раскрывающемся списке выбора, чтобы выбрать более одного варианта с помощью клавиши Ctrl или Cmd .

Выберите несколько городов: --Выберите город - Нью-ДелиКолкатаМумбаиЧеннаиНоидаГурграмФаридабадГазиабад Нажмите Ctrl или Cmd для множественного выбора.

 
<выбрать несколько>
    <опция выбрана отключена> - Выбрать город - 
    
        
        
        
        
    
    
        
        
        
        
    


  

Выберите дату рождения в раскрывающемся списке

--Выберите месяц - JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC - Выберите дату - 12345678

121314151617181

22232425262728293031

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

Textarea используется для записи нескольких строк.Например, сообщение, запрос, адрес, комментарии, отзывы и т. Д. Textarea может иметь атрибуты row и col . Строки по умолчанию - 2, а столбцы по умолчанию - 20.

Пример Textarea

 
    
    
    
    
    

  

Кнопка отправки

Кнопка отправки или тип ввода submit используется для отправки информации от пользователя на веб-сервер.Кнопка «Отправить» может использоваться только один раз в теге формы.

Пример кнопки отправки

 
    
  

Кнопка сброса

Кнопка сброса или сброс типа ввода используется для перезагрузки данных формы без обновления веб-страницы. Сброс также используется один раз в теге формы.

Создать кнопку сброса

 
    
  

Тег кнопки

Тег кнопки или Кнопка может создавать кнопки, подобные кнопке типа ввода.Тег кнопки - это парный элемент. Мы можем использовать изображение, значок или дочерний элемент внутри тега кнопки.

Тип кнопок

  • Кнопка, .
  • Кнопка сброса, .
  • Кнопка "Отправить", .

Пример тега кнопки

Кнопка 1 Кнопка 2 Сброс настроек Представлять на рассмотрение

 
    
  

Полевой набор

Форма или элементы управления формой также могут быть помещены в тег fieldset . Тег Fieldset используется для группировки форм или нескольких элементов управления вводом. Fieldset групповые элементы управления формы в области с рамкой. Мы также можем использовать тег легенды внутри набора полей.

Основные функции Fieldset : , чтобы отключить несколько элементов управления формой .

Fieldset с легендой

Форма запроса

 
Форма запроса

Fieldset с отключенным

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

Форма запроса

 
<набор полей отключен>
     Форма запроса 
        

Полная форма HTML со всеми входами, раскрывающимся списком выбора, переключателями, флажком, текстовым полем, кнопками отправки и сброса.

 
<форма>
    <таблица>
        
            
                
            
            
                
            
        
        
            
                
            
            
                
                
            
        
        
            
                
            
            
                
            
        
        
            
                
            
            
                
            
        
        
            
                    
            
            
                    
            
        
        
            
                
            
            
                
            
        
        
            
                
            
            
                <метка>
                     Крикет
                
                <метка>
                     Футбол
                
            
        
        
            
                
            
            
                <метка>
                     Женский 
                    <метка>
                     Мужской 
            
        
        
            
                    
            
            
                    
            
        
        
            
                
            
            
                
            
        
        
             
            
                
                
            
        
    

  

Внутри элемента формы кнопка будет работать как кнопка отправки, но вне формы кнопка будет работать как кнопка.

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

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