Метод POST
Одним из основных способов передачи данных веб-сайту является обработка форм. Формы представляют специальные элементы разметки HTML, которые содержат в себе различные элементы ввода - текстовые поля, кнопки и т.д. И с помощью данных форм мы можем ввести некоторые данные и отправить их на сервер. А сервер уже обрабатывает эти данные. Создание форм состоит из следующих аспектов:
-
Создание элемента
<form><form>
в разметке HTML - Добавление в этот элемент одно или несколько поле ввода
-
Установка метода передачи данных. Чаще всего используются методы
GET
илиPOST
- Установка адреса, на который будут отправляться введенные данные
POST-запросы
Итак, создадим новую форму. Для этого определим новый файл form.php
, в которое поместим следующее содержимое:
<!DOCTYPE html>
<html>
<head>
<title>hmarketing.ru</title>
<meta charset="utf-8" />
</head>
<body>
<h3>Форма ввода данных</h3>
<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
, который будет иметь следующее содержание:
<?
$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>hmarketing.ru</title>
<meta charset="utf-8" />
</head>
<body>
<?
$name = "не определено";
$age = "не определен";
if(isset($_POST["name"])){
$name = $_POST["name"];
}
if(isset($_POST["age"])){
$age = $_POST["age"];
}
echo "Имя: $name <br> Возраст: $age";
?>
<h3>Форма ввода данных</h3>
<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>hmarketing.ru</title>
<meta charset="utf-8" />
</head>
<body>
<?
$name = "не определено";
$age = "не определен";
if(isset($_GET["name"])){
$name = $_GET["name"];
}
if(isset($_GET["age"])){
$age = $_GET["age"];
}
echo "Имя: $name <br> Возраст: $age";
?>
<h3>Форма ввода данных</h3>
<form method="GET">
<p>Имя: <input type="text" name="name" /></p>
<p>Возраст: <input type="number" name="age" /></p>
<input type="submit" value="Отправить">
</form>
</body>
</html>