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() возвратит значение
.
Теперь мы можем обратиться к скрипту 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-глобальные $ _жет и $ _пост.
PHP-Простая HTML-форма
В приведенном ниже примере показана простая HTML-форма с двумя полями ввода и кнопкой Submit:
Пример
<form action=»welcome.php» method=»post»>
Name: <input type=»text» name=»name»><br>
E-mail: <input type=»text» name=»email»><br>
<input type=»submit»>
</form>
</html>
Когда пользователь заполняет форму выше и нажимает кнопку Submit, данные формы отправляются для обработки в файл PHP с именем «Welcome. php». Данные формы передаются с помощью метода HTTP POST.
Для отображения отправленных данных можно просто повторить все переменные. «Welcome. php» выглядит следующим:
Welcome <?php echo $_POST[«name»]; ?><br>
Your email address is: <?php echo $_POST[«email»]; ?>
</body>
</html>
Выход может быть что-то вроде этого:
Такой же результат может быть достигнут с помощью метода HTTP GET:
Пример
<form action=»welcome_get.php» method=»get»>
Name: <input type=»text» name=»name»><br>
E-mail: <input type=»text» name=»email»><br>
<input type=»submit»>
</form>
</body>
</html>
и «welcome_get.php» выглядит так:
Welcome <?php echo $_GET[«name»]; ?><br>
</body>
</html>
Приведенный выше код довольно прост. Однако, самое главное не хватает. Необходимо проверить данные формы для защиты сценария от вредоносного кода.
Подумайте безопасности при обработке PHP форм!
Эта страница не содержит никакой проверки формы, она просто показывает, как можно отправлять и извлекать данные формы.
Однако на следующих страницах будет показано, как обрабатывать PHP-формы с учетом безопасности! Правильная проверка данных формы важна для защиты вашей формы от хакеров и спамеров!
Получить VS. Post
Оба Get и POST создать массив (например, Array (ключ = > значение, Key2 = > value2, Key3 = > валуе3,…)). Этот массив содержит пары «ключ-значение», где ключи — это имена элементов управления формы, а значения — входные данные пользователя.
Как Get, так и POST рассматриваются как $ _жет и $ _пост. Это глобальные, что означает, что они всегда доступны, независимо от области видимости-и вы можете получить к ним доступ из любой функции, класс или файл без необходимости делать ничего особенного.
$ _жет-это массив переменных, передаваемых текущему сценарию через параметры URL.
$ _пост-это массив переменных, передаваемых текущему сценарию с помощью метода HTTP POST.
Когда использовать Get?
Информация, отправляемая из формы с методом GET, видна всем (все имена переменных и значения отображаются в URL-адресе). Get также имеет ограничения на объем отправляемой информации. Ограничение составляет около 2000 символов. Однако, поскольку переменные отображаются в URL-адресе, можно закладка страницы. Это может быть полезно в некоторых случаях.
Get может использоваться для отправки не конфиденциальных данных.
Примечание: Get никогда не должны использоваться для отправки паролей или другой конфиденциальной информации!
Когда использовать POST?
Кроме того, POST поддерживает расширенные функциональные возможности, такие как поддержка многокомпонентного двоичного ввода при загрузке файлов на сервер.
Однако, поскольку переменные не отображаются в URL-адресе, невозможно закладка страницы.
Разработчики предпочитают публикацию для отправки данных формы.
Далее, давайте посмотрим, как мы можем обрабатывать PHP формирует безопасный способ!
Обработка форм сайта с помощью PHP – База знаний Timeweb Community
Введение
Формы используют для отправки какой-либо информации на сервер, которую необходимо как-то обработать.
Места использования форм:
- Создание регистрации и авторизации
- Создание блока комментариев
- Создание обращения в техническую поддержку (тикеты)
Создаём форму на HTML
Код формы необходимо помещать в <body> HTML документа.
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Формы</title> </head> <body> Здесь должна быть ваша форма. </body> </html>
Я пропущу скелет документа дальше, чтобы было более понятно.
<form action="" method="post"> <p>Введите логин: <input type="text" name="login"></p> <p>Введите пароль: <input type="password" name="pass"></p> <p><input type="submit" value="Отправить" name="done"></p> </form>
В атрибут action нужно указать обработчик формы (PHP-скрипт). Если поле пусто, значит, обработку формы выполнил тот скрипт, в котором расположена сама форма. В атрибут
Наглядный пример get:
Наглядный пример post:
Немного по PHP:
При отправке формы методом POST данные записываются в суперглобальный массив $_POST.
При отправке формы методом GET данные записываются в суперглобальный массив $_GET.
К суперглобальным массивам $_POST и $_GET нужно обращаться обычным способом (как вы делаете это и с обычными ассоциативными массивами) $массив[‘ключ’].
В форме мы сделали 3 <input>. Первые два — поле ввода логина и пароля. Третий — кнопка отправки формы.
Тег <input> имеет атрибут type=»». Для каждого случая указывают свой тип ввода. Допустим, text устанавливают для текста, submit — для отправки формы по атрибуту (action), а password — для пароля (чтобы он отображался звёздочками *).
Кроме того, тег <input> имеет атрибут name=»» и атрибут value=»». Value — стандартное значение элемента, name — предназначено для того, чтобы обработчик формы мог его идентифицировать.
Создаём обработчика формы
Мы перешли к самому интересному моменту статьи. Если мы обрабатываем форму на другой странице (action=»example.php»), то после нажатия кнопки подтверждения вас перекинет на указанную страницу.
Если action пуст, то страница с формой перезагрузится.
В самом верху скелета документа (перед <!DOCTYPE html>) открываем теги PHP и обрабатываем форму:
<? // Если кнопка нажата, то выполняет тело условия if (isset($_POST['done'])) { echo 'кнопка обработчика была нажата!<br>'; // Если логин и пароль не пуст(есть значение), а также пароль не 123 if (!empty($_POST['login']) && $_POST['pass'] != 123 && !empty($_POST['pass'])) { echo "Всё хорошо, все поля пройдены. "; echo "Здесь должна быть ваша обработка формы. "; echo "Занесение в базу данных, отправка сообщения и т.п."; } // Если логин пуст, тогда выводит сообщение if ($_POST['login'] == '') { echo 'Логин пуст!<br>'; } // Если пароль популярный ||(или) пуст, тогда выводит сообщение if ($_POST['pass'] == '123' || empty($_POST['pass'])) { echo "Нельзя использовать популярные пароли. Придумайте свой!<br>"; } } ?>
Теперь если форма не прошла проверку, то все данные стираются, и нужно их вводить заново.
Давайте доработаем форму, чтобы исправить это, а также изменим место вывода ошибок.
В самом верху PHP-тега заводим 2 новые переменные, которые по стандарту пусты:
$error_login = ""; $error_pas = "";
В проверке на пароль:
$error_pas .= "Нельзя использовать популярные пароли. Придумайте свой!<br>";
В проверке на логин:
$error_login .= 'Логин пуст!<br>';
.= означает то, что мы берём прошлую строку (пусто) и прибавляем к этому наше сообщение.
В форме HTML:
Добавляем после тега <input> вставку PHP (в данном случае <?= ?>), так как мы только выводим переменную. Суть проста: если ошибки в логине нет, тогда $error_login пуст, а следственно, ничего не выводится, иначе выводим там ошибку.
<p>Введите логин: <input type="text" name="login"><?=$error_login?></p> <p>Введите пароль: <input type="password" name="pass"><?=$error_pas?></p>
Теперь доработаем форму, чтобы она сохраняла значения полей.
В самом начале добавляем 2 переменные:
$input_login =""; $input_pass = "";
В начало проверки на ‘нажата ли кнопка отправки’ добавляем:
$input_login = $_POST['login']; $input_pass = $_POST['pass'];
То есть мы заносим в переменные значения из суперглобального массива $_POST.
И немного изменяем нашу HTML-форму:
<form action="" method="post"> <p>Введите логин: <input type="text" name="login" value="<?=$input_login?>"><?=$error_login?></p> <p>Введите пароль: <input type="password" name="pass" value="<?=$input_pass?>"><?=$error_pas?></p> <p><input type="submit" value="Отправить" name="done"></p> </form>
Добавляем тег value, чтобы указать стандартное значение поля. Теперь если выдаётся ошибка, то значения полей сохраняются, и пользователю нужно не заново их вводить, а только исправить ошибку.
Заключение
Как видите, создать хорошую форму на PHP не так уж и сложно. Проверки, которые я показал в этой статье, не обязательно должны быть. Вы можете придумывать свои (любые) проверки на поля ввода, используя PHP. Надеюсь, что вам понравилась моя статья, и вы выучили что-то новое.
Всем спасибо за внимание!
Итоговый код страницы с формой + обработчика:
https://pastebin.com/N9WegitB
Основы работы с формами в PHP для новичков
Формы — это элементы HTML страницы, в которые пользователь может вводить данные, например, свое имя, фамилию, возраст, логин и пароль и так далее.
Эти данные затем могут быть получены в PHP и обработаны нужным нам образом.
К примеру, пользователь вводит свое имя и фамилию в форму, нажимает на кнопку отправки и введенные данные уходят на сервер в PHP. Там мы можем получить введенные имя и фамилию и, к примеру, сохранить их в базу данных.
Как сделать форму на HTML
Форма создается с помощью тега form. Этот тег имеет два важных атрибута.
Атрибут action задает адрес страницы сайта, на которую будут отправляться введенные данные. Если оставить этот атрибут пустым — форма отправится на текущую страницу сайта.
Атрибут method задает способ отправки формы. Может принимать значение GET или POST. При отправки методом GET данные из формы будут видны в адресной строке, а при отправке методом POST — не видны.
Имейте ввиду, что PHP код страницы с формой выполнится не один раз, как может показаться, а два раза — первый раз пользователь зайдет на страницу сайта, заполнит форму, нажмет на кнопку отправки, данные из формы отправятся на сервер и PHP код страницы начнет выполнятся сначала.
Поля формы
Внутри тега form можно располагать различные элементы формы: поле ввода input, кнопку отправки формы, многострочное поле ввода textarea и некоторые другие элементы, которые нам пока не нужны.
Пример формы
<form action="" method="GET">
<input type="text" name="user"><br><br>
<textarea name="message"></textarea><br><br>
<input type="submit">
</form>
Как получить данные из формы в PHP
Мы можем получить данные, которые ввел пользователь в форму, в PHP коде. Это делается с помощью глобальных массивов $_GET, $_POST, $_REQUEST.
В $_GET будут лежать данные, отправленные методом GET, в $_POST будут лежать данные, отправленные методом POST, а $_REQUEST — данные, отправленные и тем, и другим методом одновременно.
Как именно это делается: пусть в форме есть инпут с атрибутом name=»user». Тогда после отправки этой формы мы можем получить данные из этого инпута таким образом: $_GET[‘user’] (или $_POST[‘user’], или $_REQUEST[‘user’]).
Сохраняем значения полей формы после отправки
Давайте сделаем так, чтобы при отправке формы не стирались значения из инпутов:
<form action="" method="GET">
<input type="text" name="user" value="<?php echo $_REQUEST['user']; ?>">
<input type="submit">
</form>
Пример выше будет генерировать предупреждение PHP при первом заходе на страницу — в случае, когда отправка формы еще не была сделана. Исправим это:
<form action="" method="GET">
<input name="user" value="<?php if(isset($_REQUEST['user'])) echo $_REQUEST['user']; ?>">
<input type="submit">
</form>
Дополнительные материалы
Рекомендую посмотреть видео из заочного курса: скачайте его по данной ссылке.
Что вам делать дальше:
Приступайте к решению задач по следующей ссылке: задачи к уроку.
Когда все решите — переходите к изучению новой темы.
Получаем данные от элементов формы с помощью PHP
В этом уроки мы с помощью функций PHP получим данные, которые будет вводить пользователь в форму.
Первое, что нам нужно — это создать форму:
<form action="app/check.php" method="post">
<p>Имя: <input name="name" type="text"></p>
<p>Фамилия: <input name="surname" type="text"></p>
<p>E-mail: <input name="email" type="text"></p>
<p>Сообщение: <br /><textarea name="message" cols="30" rows="5"></textarea></p>
<p><input type='submit' value='Отправить'></p>
</form>
Обратите внимание на строку action=»app/check.php» — это адрес обработчика формы, сюда будут отправляться данные формы, после нажатия кнопки Отправить. Также, на параметр name у полей формы, мы будем использовать эти имена при написании кода. Передавать данные будем методом — POST.
1. Давайте начнем. Создайте и откройте (через редактор) обработчик app/code.php — сначала, это просто пустая страница. Далее откройте тег PHP — <?php.
2. Нам нужно проверить, была ли отправлена форма, для этого мы будем использовать глобальную переменную $_SERVER
и проверять REQUEST_METHOD
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// наш код
}
?>
3. Дальше, если форма отправлена, мы можем получить данные от поля «Имя», для этого, какой-нибуть переменной присваиваем полученное значение от этого поля, например:
<?php
$name = $_POST['name'];
?>
$_POST
— переменная, в которой сохраняются данные, если форма была отправлена методом POST.
$_POST['name']
— получаем данные от поля name.
4. Тоже самое делаем и для остальных наших полей:
<?php
$name = $_POST['name'];
$surname = $_POST['surname'];
$email = $_POST['email'];
$message = $_POST['message'];
?>
5. Данные мы получили, теперь мы можем их вывести, для этого в страницу обработчика дописываем код:
<?php
$name = $_POST['name'];
$surname = $_POST['surname'];
$email = $_POST['email'];
$message = $_POST['message'];
echo $name."<br />".$surname."<br />".$email."<br />".$message."<br />";
?>
Не рекомендуется просто так, без проверки, выводить введенные пользователем данные.
Пропускайте переменные хотя бы через функцию htmlspecialchars.
Вот так, можно получать данные введенные в элементы формы.
Посмотреть исходники
PHP форма
PHP $ _GET и $ _POST переменные используются для получения информации в виде, например, ввод данных пользователем.
PHP обработки формы
Одна вещь , очень важные вещи , которые следует обратить внимание при работе с HTML — формы, PHP может прийти из HTML элементов страницы формыавтоматически становятся доступными для PHP — скриптов.
примеров
Следующий пример содержит HTML-форму с двумя полями ввода и кнопку отправки.
form.html код файла выглядит следующим образом :
<html> <head> <meta charset="utf-8"> <title>本教程(w3big.com)</title> </head> <body> <form action="welcome.php" method="post"> 名字: <input type="text" name="fname"> 年龄: <input type="text" name="age"> <input type="submit" value="提交"> </form> </body> </html>
Когда пользователь заполнить форму выше и нажмите кнопку отправки, данные формы будут отправлены в файл PHP с именем «welcome.php» из:
welcome.php файлы следующим образом:
欢迎 <?php echo $_POST["fname"]; ?>!<br> 你的年龄是 <?php echo $_POST["age"]; ?> 岁。
Демо доступ через браузер следующим образом:
Мы объясним в PHP $ _GET и $ _POST переменных в следующей главе.
Аутентификация с помощью форм
Если всякий раз, когда это возможно, чтобы подтвердить ввод данных пользователем (с помощью сценариев на стороне клиента). Проверка браузера быстрее и может уменьшить нагрузку на сервер.
Если пользователь должен ввести в базу данных, вы должны рассмотреть вопрос об использовании проверки подлинности сервера. В аутентификации сервера сформировать хороший способ передать форму самостоятельно, вместо того, чтобы прыгать на другую страницу. Так что пользователи могут получить сообщение об ошибке в том же виде страницы. Пользователи также легче найти ошибки.
PHP и формы | PHP
Ни для кого не является секретом, что наиболее распространенным способом взаимодействия html-страницы с сайтом является форма. Форма (то есть, html-элемент образуемый тегом form) используется и бесплатными почтовыми службами, электронными магазинами и многими другими типами сайтов.
Обработка простых форм посредством PHP не представляет никакого труда. Однако время от времени возникает потребность обработать форму, содержащую несколько однотипных полей, притом, что их количество может изменяться в широком диапазоне и их количество заранее не известно. В PHP предусмотрено для таких случаев обработка однотипных полей как массива значений.
Рассмотрим подробнее варианты для разных типов полей.
Под текстовыми полями в этой статье понимаются элементы, создаваемые тегам input со значением параметра type равным text и тегом textarea. Организовать обработку формы состоящей из нескольких таких полей проще всего. На листинге ниже приведен листинг с html-разметкой для такой формы.
<form action='do.html' method='post'> <input type='text' name='txt[0]' value=''><br> <input type='text' name='txt[1]' value=''><br> <input type='text' name='txt[2]' value=''><br> <input type='text' name='txt[3]' value=''><br> <input type='text' name='txt[4]' value=''><br> <input type='submit' value='Отправить'> </form>
Как видно из листинга, имена для элементов формы, с точки зрения PHP, являются элементами массива. Поэтому PHP-сценарий, который будет обрабатывать эту форму, будет воспринимать все множество текстовых полей этой формы как единый массив. К отдельным элементам можно обращаться по индексам или использовать перечисление при помощи команд list и each, как это сделано в следующем примере.
<?php while(list($key,$val) = each($txt)) echo "ключ - $key, значение - $val<br>n"; ?>
Переключателями (checkbox) в этой статье называются элементы, создаваемые тегам input со значением параметра type равным checkbox. Форма для использования переменного количества «переключателей» строится абсолютно так же. Обратите внимание, что выбор конкретного значения переключателя (то есть значение свойства value) не важен. Пример приведен в листинге ниже:
<form action='do.html' method='post'> <input type='checkbox' name='chb[0]' value='1'><br> <input type='checkbox' name='chb[1]' value='1'><br> <input type='checkbox' name='chb[2]' value='1'><br> <input type='checkbox' name='chb[3]' value='1'><br> <input type='checkbox' name='chb[4]' value='1'><br> <input type='submit' value='Отправить'> </form>
Однако обработка такой формы отличается от обработки, описанной для текстовых полей. В данном случае необходимо определить, включил или нет посетитель сайта тот или иной переключатель. Если включил — то соответствующий элемент массива существует, если нет — то отсутствует. В следующем листинге приведен пример PHP сценария, который распечатывает включенные переключатели:
Перед тем как описывать обработку радио-кнопок необходимо вспомнить, как они работают. Суть радио-кнопок (элементы созданные тегами input со значением параметра type равным radio) заключается в том что, выбирая одну кнопку, пользователь автоматически снимает выделение с другой кнопки из этого же набора. Кнопки объединяются в набор очень просто: у всех кнопок в наборе одно и тоже имя.
А вот значения (то есть параметры value) у кнопок в наборе — разные. И на сайт будет отправлено значение выбранной кнопки с именем набора. Так же как и в случае с текстовыми полями и переключателями имена наборов радио-кнопок должны оформляться как имена элементов массива в PHP. Пример такой формы приведен в следующем листинге:
<form action='do.html' method='post'> // первый набор кнопок <input type='radio' name='rdi[0]' value='1'> <input type='radio' name='rdi[0]' value='2'> <input type='radio' name='rdi[0]' value='3'><br> // второй набор кнопок <input type='radio' name='rdi[1]' value='1'> <input type='radio' name='rdi[1]' value='2'> <input type='radio' name='rdi[1]' value='3'><br> // третий набор кнопок <input type='radio' name='rdi[2]' value='1'> <input type='radio' name='rdi[2]' value='2'> <input type='radio' name='rdi[2]' value='3'><br> <input type='submit' value='Отправить'> </form>
Обработка радио-кнопок объединяет идеи, использование при обработке, как текстовых полей, так и переключателей. Если автор html-страницы не установил значение по умолчанию, а пользователь не выбрал определенную кнопку в наборе радио-кнопок, то данный элемент будет отсутствовать в массиве (как для переключателей).
Если же кнопка выбрана, то соответствующий элемент массива будет содержать ее значение (как для текстовых полей). Ниже приведен листинг примера, обрабатывающего форму с несколькими наборами радио-кнопок.
<?php while(list($key,$val) = each($rdi)) echo "ключ - $key, значение - $val<br>n"; ?>
Таким образом, ничего сложного в обработке сложных форм нет.
Регистрационная форма PHP с использованием методов GET, POST с примером
Что такое форма?
Когда вы входите на сайт или в свой почтовый ящик, вы взаимодействуете с формой.
Формыиспользуются для получения ввода от пользователя и отправки его на веб-сервер для обработки.
На схеме ниже показан процесс обработки формы.
Форма — это HTML-тег, содержащий элементы графического пользовательского интерфейса, такие как поле ввода, переключатели флажков и т. Д.
Форма определяется с помощью тегов
, а элементы графического интерфейса пользователя определяются с помощью элементов формы, таких как ввод.В этом руководстве вы узнаете:
Когда и почему мы используем формы?
- Формы пригодятся при разработке гибких и динамических приложений, принимающих ввод данных пользователем.
- Формы могут использоваться для редактирования уже существующих данных из базы данных
Создать форму
Мы будем использовать HTML-теги для создания формы.Ниже приведен минимальный список вещей, которые вам понадобятся для создания формы.
- Открытие и закрытие тегов формы
- Форма отправки типа POST или GET
- URL отправки, который будет обрабатывать отправленные данные
- Поля ввода, такие как поля ввода, текстовые области, кнопки, флажки и т. Д.
Код ниже создает простую регистрационную форму
Регистрационная форма Регистрационная форма
При просмотре приведенного выше кода в веб-браузере отображается следующая форма.
ЗДЕСЬ,
- — открывающий и закрывающий теги формы
- действие = »форма_регистрации.php ”method =” POST ”> указывает целевой URL и тип отправки.
- Имя / Фамилия: метки для полей ввода
- — теги поля ввода
-
это новый тег строки - — это скрытое значение, которое используется для проверки того, была ли форма отправлена или нет
- — это кнопка, при нажатии на которую форма отправляется на сервер для обработки
Отправка данных формы на сервер
Атрибут действия формы указывает URL-адрес отправки, который обрабатывает данные.Атрибут метода указывает тип отправки.
PHP Метод POST
- Это встроенная переменная суперглобального массива PHP, которая используется для получения значений, отправленных с помощью метода HTTP POST.
- Доступ к переменной массива можно получить из любого скрипта в программе; он имеет глобальный охват.
- Этот метод идеален, если вы не хотите отображать значения сообщения формы в URL-адресе.
- Хороший пример использования метода post — отправка данных для входа на сервер.
Он имеет следующий синтаксис.
Php $ _POST ['имя_переменной']; ?>
ЗДЕСЬ,
- «$ _POST […]» — это массив PHP
- «’ Имя_переменной ’» — это имя переменной URL.
Метод PHP GET
- Это встроенная переменная суперглобального массива PHP, которая используется для получения значений, отправленных с помощью метода HTTP GET.
- Доступ к переменной массива можно получить из любого скрипта в программе; он имеет глобальный охват.
- Этот метод отображает значения формы в URL-адресе.
- Он идеально подходит для форм поисковых систем, поскольку позволяет пользователям отмечать результаты в закладках.
Он имеет следующий синтаксис.
Php $ _GET ['имя_переменной']; ?>
ЗДЕСЬ,
- «$ _GET […]» — это массив PHP
- «’ Имя_переменной ’» — это имя переменной URL.
Методы GET и POST
ПОСТ | ПОЛУЧИТЬ |
---|---|
Значения, не отображаемые в URL-адресе | Значения, отображаемые в URL-адресе |
Не имеет ограничений на длину значений, поскольку они отправляются через тело HTTP | .Имеет ограничение на длину значений обычно 255 символов.Это потому, что значения отображаются в URL-адресе. Обратите внимание, что верхний предел символов зависит от браузера. |
Имеет более низкую производительность по сравнению с методом Php_GET из-за времени, затраченного на инкапсуляцию значений Php_POST в теле HTTP | .Имеет высокую производительность по сравнению с методом POST благодаря простоте добавления значений в URL-адрес. |
Поддерживает множество различных типов данных, таких как строковые, числовые, двоичные и т. Д. | Поддерживает только строковые типы данных, поскольку значения отображаются в URL-адресе | .
Результаты не могут быть занесены в книгу с пометкой | Результаты можно пометить в книге благодаря видимости значений в URL-адресе |
На приведенной ниже диаграмме показана разница между get и post
Обработка данных регистрационной формы
Регистрационная форма отправляет данные самой себе, как указано в атрибуте действия формы.
После отправки формы значения заполняются в суперглобальном массиве $ _POST.
Мы будем использовать функцию PHP isset, чтобы проверить, заполнены ли значения формы в массиве $ _POST, и обработать данные.
Мы изменим регистрационную форму, добавив в нее PHP-код, обрабатывающий данные. Ниже модифицированный код
php endif; ? >Регистрационная форма php if (isset ($ _ POST ['form_submitted'])):?> // этот код выполняется при отправке формыСпасибо
php echo $ _POST ['firstname']; ?>Вы зарегистрированы как php echo $ _POST ['имя'].''. $ _POST ['фамилия']; ?>
Вернитесь назад к форме
php else:?>Регистрационная форма
ЗДЕСЬ,
Другие примеры
Простая поисковая машина
Мы разработаем простую поисковую систему, которая использует метод PHP_GET в качестве типа отправки формы.
Для простоты мы будем использовать оператор PHP If для определения вывода.
Мы будем использовать тот же HTML-код для формы регистрации выше и вносить в нее минимальные изменения.
php endif; ?>Простая поисковая система php if (isset ($ _ GET ['form_submitted'])):?>Результаты поиска для
php echo $ _GET ['search_term']; ?> php if ($ _GET ['search_term'] == "GET"):?>Метод GET отображает свои значения в URL-адресе
php else:?>К сожалению, по вашему поисковому запросу совпадений не найдено
php endif; ?>Перейдите на назад к форме
php else:?>Простая поисковая система - введите GET
Просмотрите указанную выше страницу в веб-браузере
Будет показана следующая форма
Введите GET в верхнем регистре и нажмите кнопку отправки.
Будет показано следующее
На диаграмме ниже показан URL для результатов выше
Обратите внимание, что URL-адрес отображает значение search_term и form_submitted. Попробуйте ввести что-нибудь отличное от GET, затем нажмите кнопку отправки и посмотрите, какие результаты вы получите.
Работа с флажками, переключателями
Если пользователь не устанавливает флажок или переключатель, значение не отправляется, если пользователь выбирает флажок или переключатель, отправляется значение один (1) или истина.
Мы изменим код регистрационной формы и добавим кнопку проверки, которая позволяет пользователю согласиться с условиями обслуживания.
php endif; ?>Регистрационная форма php if (isset ($ _ POST ['form_submitted'])):?> php if (! isset ($ _ POST ['согласен'])):?>Вы не приняли наши условия использования
php else:?>Спасибо
php echo $ _POST ['firstname']; ?>Вы зарегистрированы как php echo $ _POST ['имя'].''. $ _POST ['фамилия']; ?>
Вернитесь назад к форме
php endif; ?> php else:?>Регистрационная форма
Просмотрите форму выше в браузере
Введите имя и фамилию
Обратите внимание, что флажок Согласен с условиями обслуживания не установлен.
Нажмите кнопку «Отправить»
Вы получите следующие результаты
Нажмите на ссылку возврата к форме и установите флажок
.Нажмите кнопку «Отправить»
Вы получите следующие результаты
Сводка
- Формы используются для получения данных от пользователей
- Формы создаются с использованием HTML-тегов
- Формы могут быть отправлены на сервер для обработки с использованием метода POST или GET .
- Значения формы, отправленные с помощью метода POST, инкапсулируются в тело HTTP.
- Значения формы, отправленные с помощью метода GET, добавляются и отображаются в URL-адресе.
Как получить доступ к отправленным данным формы в PHP
В этом руководстве вы узнаете, как собирать вводимые пользователем данные, отправленные через форму, с использованием суперглобальных переменных PHP $ _GET
, $ _POST
и $ _REQUEST
.
Создание простой контактной формы
В этом руководстве мы собираемся создать простую контактную форму HMTL, которая позволяет пользователям вводить свои комментарии и отзывы, а затем отображать их в браузере с помощью PHP.
Откройте ваш любимый редактор кода и создайте новый файл PHP. Теперь введите следующий код и сохраните этот файл как «contact-form.php» в корневом каталоге вашего проекта.
Контактная форма
Свяжитесь с нами
Заполните эту форму и отправьте нам.
Расшифровка кода
Обратите внимание, что в открывающем теге есть два атрибута:
- Атрибут действия ссылается на PHP-файл «форма процесса.php «, который получает данные, введенные в форму, когда пользователь отправляет их, нажав кнопку отправки.
- Атрибут метода
Остальные элементы внутри формы являются основными элементами управления формы для получения пользовательского ввода. Чтобы узнать больше об элементах HTML-форм, ознакомьтесь с руководством по HTML-формам.
Сбор данных формы с помощью PHP
Чтобы получить доступ к значению определенного поля формы, вы можете использовать следующие суперглобальные переменные.Эти переменные доступны во всех областях сценария.
Суперглобал | Описание |
---|---|
$ _GET | Содержит список всех имен полей и значений, отправленных формой с использованием метода get (т. Е. Через параметры URL). |
$ _POST | Содержит список всех имен полей и значений, отправленных формой с использованием метода публикации (данные не будут отображаться в URL-адресе). |
$ _ЗАПРОС | Содержит значения переменных $ _GET и $ _POST , а также значения суперглобальной переменной $ _COOKIE . |
Когда пользователь отправляет вышеуказанную контактную форму, нажимая кнопку отправки, данные формы отправляются в файл «process-form.php» на сервере для обработки.Он просто фиксирует информацию, отправленную пользователем, и отображает ее в браузере.
PHP-код файла «process-form.php» будет выглядеть примерно так:
Контактная форма
Спасибо
Вот предоставленная вами информация:
- Имя: php echo $ _POST ["name"]?>
- Электронная почта: php echo $ _POST ["email"]?>
- Тема: php echo $ _POST ["subject"]?>
- Сообщение: php echo $ _POST ["message"]?>
Приведенный выше PHP-код довольно прост.Поскольку данные формы отправляются с помощью метода post, вы можете получить значение определенного поля формы, передав его имя в суперглобальный массив $ _POST
и отобразив значение каждого поля с помощью оператора echo ()
.
В реальном мире нельзя доверять пользовательскому вводу; вы должны реализовать какую-то проверку, чтобы фильтровать вводимые пользователем данные перед их использованием. В следующей главе вы узнаете, как очистить и проверить данные этой контактной формы и отправить их по электронной почте с помощью PHP.
Обработка форм PHP — GeeksforGeeks
Php
if
(isset (
$ _POST
[
'submit'
]))
80
if
((! isset (
$ _POST
[
'firstname'
])) || (! isset (
$ _POST
[
'lastname'
])) ||
(! Isset (
$ _POST
[
'адрес'
])) || (! Isset (
$ _POST
[
'адрес электронной почты
]
) ||
(! Isset (
$ _POST
[
'пароль'
])) || (! Isset (
$ _POST
[
'пол'
] )))
{
902 80
$ error
=
"*"
.
«Заполните все обязательные поля»
;
}
еще
{
$ имя
первое =
$
$ lastname
=
$ _POST
[
'lastname'
];
$ адрес
=
$ _POST
[
'адрес'
];
$ emailaddress
=
$ _POST
[
'emailaddress'
];
$ пароль
=
$ _POST
[
'пароль'
];
$ пол
=
$ _POST
[
'пол'
];
}
}
?>
Обработка форм с использованием PHP
80 9fieldset>
])
if
(isset (
$ error
))
{
echo
"
$ error
.
"
;
}
}
?>
5
9 name =
"имя"
/>
"color: red;"
> *
Фамилия:
"
name =
"фамилия"
/>
"цвет: красный;"
> *
Адрес:
" " " name =
"адрес"
/>
"color: red;"
> *
Электронная почта:
<тип ввода =
name =
"emailaddress"
/>
"color: red;"
> *
Пароль:
<тип ввода =
пароль name =
"пароль"
/>
"color: red;"
> *
Пол:
09
значение =
«Мужской»
name =
«пол»
> Мужской
<тип ввода =
9279 «радио»
«радио»
value =
«Женский»
name =
«Пол»
> Женский
вход
4
4
04
04 type = "submit"
value =
"Submit"
name =
"submit"
/>
Php
if
(isset (
$ _POST
[
'submit'
]))
если
(! Isset (
$ error
))
{
echo
"
ВХОД ПОЛУЧЕН
" ;
echo
"
"
" ;
echo
«»
;
echo
"
Параметр " ;
echo
"
Значение " ;
эхо
"
;
эхо
«
» " ;
echo
"
Имя " ;
echo
"
" " .
$ имя
.
"
;
эхо
"
;
эхо
«
» " ;
echo
"
Фамилия " ;
echo
"
" " .
$ фамилия
.
"
;
эхо
"
;
эхо
«
» " ;
echo
«
Адрес » ;
echo
"
" " .
$ адрес
.
"
;
эхо
"
;
эхо
«
» " ;
echo
"
Адрес электронной почты " ;
echo
"
" " .
$ адрес электронной почты
.
"
;
эхо
"
;
эхо
«
» " ;
echo
«
Пароль » ;
echo
"
" " .
$ пароль
.
"
;
эхо
"
;
эхо
«
» " ;
echo
"
Пол " ;
echo
"
" " .
$ пол
.
"
;
эхо
"
;
эхо
"
;
}
}
?>
Когда мы разрабатываем веб-сайт или веб-приложение, нам часто приходится создавать формы для ввода данных от пользователей, например форму Login или форму Registration . Создание формы на веб-странице выполняется с использованием HTML, в то время как PHP служит транспортом для этих значений с веб-страницы на сервер, а затем для дальнейшей обработки этих значений. PHP предоставляет два суперглобала : Давайте создадим простую HTML-форму и попытаемся понять, как она работает, какие различные атрибуты доступны в теге В приведенном выше коде мы использовали тег В теге Ниже мы имеем ту же форму с методом Если мы укажем метод формы как POST , то данные формы будут отправлены на сервер с использованием метода HTTP POST. Ниже у нас есть код для доступа к данным формы в файле Php, указанном в атрибуте Привет, Studytonight
Ваш электронный адрес: [email protected] Вы получите вышеуказанный результат, если укажете имя как «Studytonight» и адрес электронной почты как «we @ studytonight».com ». Если мы укажем метод формы как GET , то данные формы будут отправлены на сервер с использованием метода HTTP GET. Ниже у нас есть код для доступа к данным формы в файле Php, указанном в атрибуте Привет, Studytonight
Ваш электронный адрес: [email protected] И снова результат остается прежним. Первым шагом для обработки данных формы является выборка данных с помощью суперглобалов POST или GET, когда у вас есть данные, вы можете делать с ними все, что угодно, отображать их на своей веб-странице, сохранять данные в базе данных, выполнять проверки и т. Д. Теперь вам должно быть интересно, какой из них мы должны использовать.Что ж, и GET, и POST используются для одной и той же цели, но работают по-разному. Когда пользователь отправляет форму, значения из полей ввода сохраняются в массиве, например массив Studytonight
действия $ _GET
и $ _POST
для сбора данных формы для обработки. Понимание того, как работает HTML-форма
и для чего они используются.
для создания HTML-формы с полями ввода для имени и электронной почты вместе с кнопкой отправки для отправки данных формы.
у нас есть два атрибута:
action
и method
, вы знаете, для чего они нужны? действие
: Используя этот атрибут, мы можем указать имя файла, который будет собирать и обрабатывать данные формы. В приведенном выше примере мы указали имя файла Php. метод
: Этот атрибут определяет способ отправки данных формы, независимо от того, будет ли он отправлен с помощью метода POST или метода GET .
, что и GET ,
Обработка форм PHP с помощью POST
action
нашей HTML-формы.
Php
// получение значения поля имени
$ name = $ _POST ["имя"];
// получаем значение поля электронной почты
$ email = $ _POST ["электронная почта"];
эхо "Привет,". $ name. «
»;
echo "Ваш адрес электронной почты:". $ email. "
";
?> Обработка форм PHP с помощью GET
action
нашей HTML-формы, на этот раз с использованием суперглобального GET.
Php
// получение значения поля имени
$ name = $ _GET ["имя"];
// получаем значение поля электронной почты
$ email = $ _GET ["электронная почта"];
эхо "Привет,".$ name. «
»;
echo "Ваш адрес электронной почты:". $ email. "
";
?> GET vs. POST: когда использовать What!
(ключ1 => значение1, ключ2 => значение2, ...)
, а затем передаются в пункт назначения (файл Php) указан в атрибуте тега
.
Использование метода GET
В случае метода GET данные формы отправляются как параметры URL, т.е.е. все значения, введенные пользователем в поля формы, отправляются сценарию действия, добавляемому в URL-адрес.
Давайте рассмотрим простой пример, чтобы понять, ниже у нас есть простая HTML-форма,
У нас есть два поля ввода в форме выше, одно - , имя , другое - , возраст .Когда мы нажимаем на «Отправить», мы будем перенаправлены на следующий URL-адрес, form-handler.php? Name = Studytonight & age = 5 , с добавлением данных формы к URL-адресу.
Отправка данных формы в качестве параметров URL-адреса иногда оказывается полезной, поскольку вы можете легко ссылок на закладки с данными формы , но для добавления параметров в URL-адрес существует ограничение в 2000 символов , следовательно, для форм с большим числом полей, это не рекомендуется, так как некоторые данные могут быть потеряны или отправка формы может привести к ошибке.
Файл Php form-handler.php будет выглядеть так:
Php
// атрибут имени поля ввода находится внутри
// квадратные скобки $ _GET superglobal
$ name = $ _GET ["имя"];
$ age = $ _GET ["возраст"];
echo "Тебя зовут". $ name. " и вы ". $ age. " лет".
?>
Вас зовут Studytonight и вам 5 лет
Поскольку данные формы видны всем, потому что они отправляются как параметры URL, поэтому мы не должны использовать метод GET для формы с конфиденциальными данными , такими как пароли и т. Д.
Использование метода POST
Когда мы используем метод POST, массив пары ключ-значение (форма-данные), поступающий из HTML-формы, отправляется как часть HTTP-запроса, поэтому они невидимы для пользователя.
Кроме того, отсутствует ограничение на количество символов для передаваемой информации / данных.
МетодPOST также поддерживает загрузку составных данных формы , которые используются для загрузки файлов.
Мы рекомендуем использовать метод POST при работе с любым веб-приложением / проектом PHP.
Давайте рассмотрим простой пример, чтобы понять, ниже у нас есть простая HTML-форма,
Файл Php form-handler.php будет выглядеть так:
Php
// атрибут имени поля ввода находится внутри
// квадратные скобки суперглобального $ _POST
$ name = $ _POST ["имя"];
$ age = $ _POST ["возраст"];
echo "Тебя зовут".$ name. " и вы ". $ age. " лет".
?>
Вас зовут Studytonight и вам 5 лет
Как проверить отправку формы в PHP?
Данная форма и задача - проверить, успешно ли отправлена форма. Используйте программу PHP для серверной части, чтобы проверить отправку формы, а также HTML и CSS, чтобы создать форму как интерфейсную часть.
Синтаксис:
if (! Пусто ($ _ POST)) if (isset ($ _ POST ['submit']))
Используйте эти два оператора, чтобы проверить, успешно ли отправлена форма.
Примечание: Для запуска этой программы используйте локальный сервер, например WAMP или XAMPP.
Method-1:
Step 1: Создайте простую форму с помощью HTML и CSS.
На этом этапе сначала создайте html-форму, чтобы проверить, правильно ли она отправлена. Таким образом, создание формы с использованием тега form - это всего лишь базовое программирование. Используйте атрибут действия, чтобы отправить запрос в другой файл PHP. Метод используется для ПОЛУЧЕНИЯ информации или POST информации, введенной в форму.
|
Вывод:
Шаг 2: Создать файл PHP5 для метода POST7 использовать7 метод в PHP, чтобы проверить, успешно ли отправлена форма.В коде используйте функцию isset () для проверки метода $ _POST [‘submit’] . Помните, что вместо отправки укажите имя кнопки отправки. После нажатия кнопки отправки это действие будет работать как метод POST.
|
Окончательный вывод на локальном хосте:
Метод 2:
Без использования отдельного файла PHP: Без использования отдельного файла, записанного HTML-код, в котором можно указать код для действия PHP в теге скрипта, как мы это делали в этой демонстрации.Оба этих кода отображают один и тот же результат, но их реализация различается.
Пример:
"Имя автора" /> 0 9 0 |
См. Пример HTML-кода выше? Это простая HTML-форма с два поля ввода, одна группа радиобоксов и текстовая область для комментариев.Давайте скажем, мы сохраняем этот код в файле с именем "test.html". При отправке данные отправляются в файл myform.php с использованием метода HTTP POST .
Все переменные, переданные текущему скрипту с помощью метода HTTP POST. хранятся в ассоциативном массиве $ _POST . Другими словами, в PHP вы можете получить доступ к данным из каждого поля, используя $ _POST ['NAME'], где NAME - это фактическое имя поля. Если вы отправите форму выше, у вас будет доступ к ряду значений массива $ _POST внутри myform.php файл:
Переменная | Содержит значение |
$ _POST ['ваше имя'] | текстовое поле "ваше имя" |
$ _POST ['email'] | текстовое поле "электронная почта" |
$ _POST ['likeit'] | выбрал группу радиобоксов "likeit" |
$ _POST ['комментарии'] | textarea "комментарии" |
При активированном register_globals все данные формы автоматически сохраняется в переменной $ name (где name - имя поля, например $ yourname или $ email), но это может привести к различным проблемам с безопасностью. и его следует избегать любой ценой! Эта функция теперь официально обесцениваются и по умолчанию отключены.
Теперь, если вы хотите отобразить отправленные данные, вы можете просто повторить все переменные, как показано ниже, , но нет! Почему? Читайте дальше.
Ваше имя: Php echo $ _POST ['ваше имя']; ?> Вам нравится этот сайт? php echo $ _POST ['likeit']; ?> Комментарии: |
Если вы сохранили этот код в файле с именем «myform.php ", заполнили поля в форме test.html и нажали "Отправить" кнопка, вывод myform.php будет выглядеть примерно так:
Ваше имя: Джон Доу Ваша электронная почта: [email protected] Вам нравится этот сайт? Да Комментарии: Это мой комментарий ... |
Довольно просто, не правда ли? Но самого главного по-прежнему не хватает! Вам необходимо подтвердить отправленные данные для защиты вашего скрипта (и, следовательно, вашего веб-сайта и сервера) от вредоносного кода.
Допустим, вы отображаете все данные, отправленные с помощью формы в файле HTML (например, в гостевой книге). Теперь представьте, что кто-то набирает этот код вместо его имя:
Если он хранится в файле HTML, любой, кто попытается его просмотреть, будет перенаправлен на номер http://www.SPAM.com ! И это меньшее, что может случиться! Неспособность правильно проверить входные данные является основной причиной большинства уязвимости и эксплойты в скриптах PHP.Вы бы не хотели кого-то чтобы взломать ваш сайт, удалите все данные и загрузите свой собственный "u \ / \ / 3R3 h5> <0r3d!" домашняя страница, а вы?
Прочтите это руководство, чтобы узнать, как проверять входные данные формы. и защитите себя от подвигов.
»Уведомление об авторских правах
© 2008-2021 myPHPform.com. Все права защищены. Копирование или распространение любая часть этого веб-сайта без нашего письменного разрешения прямо запрещенный!
.