Короткий ответ: POST-запрос в PHP принимают через массив $_POST. Обычно HTML-форма отправляет данные методом post, PHP проверяет $_SERVER['REQUEST_METHOD'], забирает значения из $_POST, валидирует их и только потом что-то сохраняет, отправляет или выводит
POST используют, когда пользователь отправляет данные: форму обратной связи, регистрацию, комментарий, заявку, поиск с приватными параметрами или настройки профиля
Простая форма
Создайте файл contact.php
<?php
$message = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');
if ($name === '' || $email === '') {
$message = 'Заполните имя и email';
} else {
$safeName = htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
$safeEmail = htmlspecialchars($email, ENT_QUOTES, 'UTF-8');
$message = 'Спасибо, ' . $safeName . '. Мы ответим на ' . $safeEmail;
}
}
?>
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>POST-запрос в PHP</title>
</head>
<body>
<?php if ($message !== ''): ?>
<p><?php echo $message; ?></p>
<?php endif; ?>
<form method="post">
<label>
Имя
<input type="text" name="name">
</label>
<label>
Email
<input type="email" name="email">
</label>
<button type="submit">Отправить</button>
</form>
</body>
</html>
Откройте файл через локальный сервер, заполните форму и отправьте. PHP получит данные в $_POST
Почему нужна проверка REQUEST_METHOD
Файл открывается и обычным GET-запросом, когда пользователь просто заходит на страницу. Поэтому обработку формы нужно запускать только после отправки
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Обрабатываем форму
}
Без этой проверки код может пытаться читать данные, которых еще нет
Как получить конкретное поле
Поле формы связано с PHP через атрибут name
<input type="text" name="username">
В PHP значение будет здесь
$username = $_POST['username'] ?? '';
Если в HTML забыть name, поле не попадет в $_POST
Почему нельзя сразу выводить $_POST
Пользователь может отправить HTML или скрипт как обычный текст. Поэтому перед выводом данные нужно экранировать
$safeName = htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
echo $safeName;
Это не заменяет всю безопасность, но защищает вывод на страницу от очевидной XSS-ошибки
POST и редирект после формы
После успешной обработки часто делают редирект, чтобы пользователь не отправил форму повторно при обновлении страницы
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = trim($_POST['name'] ?? '');
if ($name !== '') {
header('Location: /thanks.php');
exit;
}
}
Это называется схемой “POST, затем redirect”. Она особенно полезна для заявок, регистрации и оплаты
Мини-практика
Добавьте в форму поле message, проверьте, что оно не пустое, и выведите сообщение Заявка принята. Затем попробуйте отправить пустую форму и убедитесь, что PHP показывает ошибку, а не делает вид, что все прошло успешно
Частые ошибки
Ставят method="get" вместо method="post" Тогда данные окажутся в $_GET, а не в $_POST
Забывают name у input Без name поле не отправится на сервер
Не проверяют пустые значения Форма может быть отправлена с пустыми строками
Выводят пользовательский текст без htmlspecialchars Перед выводом на страницу данные нужно экранировать
Что почитать дальше по PHP
Если нужен общий маршрут по теме, откройте рубрику PHP. Для соседних задач пригодятся эти разборы:
- Как на PHP отправить данные формы на почту
- Формы в PHP: GET, POST и первая обработка
- mail в PHP: как отправить email из формы
- Как подключить PHP к HTML и вывести данные на странице



