GET и POST: когда использовать каждый метод
Разберитесь в различиях между HTTP GET и POST в PHP
«GET и POST: когда использовать каждый метод» — бесплатный урок PHP Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.
Методы веб-запросов в PHP
Когда браузер отправляет форму HTML, он использует метод GET или POST веб-запроса. PHP получает отправленные данные через суперглобальные массивы:
$_GET— данные, добавленные к адресу$_POST— данные в теле запроса
Метод GET
GET добавляет данные формы к адресу в виде параметров строки запроса:
<!-- HTML form -->
<form method="GET" action="search.php">
<input name="query" type="text">
<button type="submit">Search</button>
</form>
<!-- URL becomes: search.php?query=php+tutorial -->
<?php
$q = $_GET['query'] ?? '';
echo 'You searched for: ' . htmlspecialchars($q);Метод POST
POST отправляет данные в теле веб-запроса — они не видны в адресе:
<!-- HTML form -->
<form method="POST" action="login.php">
<input name="email" type="email">
<input name="password" type="password">
<button type="submit">Log In</button>
</form>
<?php
$email = $_POST['email'] ?? '';
$password = $_POST['password'] ?? '';Когда использовать GET
Используйте GET, когда:
- запрос идемпотентен (не имеет побочных эффектов)
- данные могут отображаться в адресе — поисковые запросы, фильтры, нумерация страниц
- нужны URL, которые можно добавлять в закладки или которыми можно делиться
- данные не являются конфиденциальными
Когда использовать POST
Используйте POST, когда:
- запрос изменяет состояние сервера (создаёт, обновляет или удаляет данные)
- данные являются конфиденциальными (пароли, личная информация)
- отправляется большой объём данных (файлы, длинный текст)
- не нужно, чтобы браузеры или промежуточные серверы кэшировали данные
Ограничения длины GET
Для GET-запросов действуют ограничения длины адреса (на практике обычно около 2000 символов). Для POST практического ограничения нет, кроме заданного конфигурацией сервера:
<?php
// php.ini settings for POST limits:
// post_max_size = 8M (total POST body size)
// upload_max_filesize = 2M
// Check current limits at runtime:
echo ini_get('post_max_size'); // 8M
echo ini_get('upload_max_filesize'); // 2MСуперглобальный массив запроса
$_REQUEST объединяет $_GET, $_POST и $_COOKIE. Это удобно, но источник данных становится менее очевидным:
<?php
// Works for both GET and POST but is ambiguous
$name = $_REQUEST['name'] ?? '';
// Better: be explicit about the expected method
$name = match($_SERVER['REQUEST_METHOD']) {
'GET' => $_GET['name'] ?? '',
'POST' => $_POST['name'] ?? '',
default => '',
};Проверка метода запроса
Всегда проверяйте метод запроса перед обработкой данных формы:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = trim($_POST['name'] ?? '');
if (!empty($name)) {
echo 'Hello, ' . htmlspecialchars($name);
}
} else {
// Show empty form
}Защищённое соединение и безопасность данных
Даже при использовании POST данные видны в открытом виде, если не используется защищённое соединение. Основные правила безопасности:
- Всегда используйте защищённое соединение в рабочей среде
- Никогда не отправляйте пароли через GET
- POST по незащищённому протоколу всё равно небезопасен — защищённое соединение шифрует и тело запроса
Перенаправление после POST (шаблон PRG)
После успешного POST перенаправляйте пользователя на GET-запрос, чтобы предотвратить повторную отправку при обновлении страницы:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Process the form...
$id = saveToDatabase($_POST);
// Post-Redirect-Get (PRG) pattern
header('Location: /success.php?id=' . $id);
exit;
}Многочастные формы для загрузки файлов
Для загрузки файлов форма должна использовать enctype="multipart/form-data" вместе с POST:
<!-- Required for file uploads -->
<form method="POST" action="upload.php"
enctype="multipart/form-data">
<input type="file" name="avatar">
<button type="submit">Upload</button>
</form>
<?php
$file = $_FILES['avatar'];
echo $file['name']; // original filenameБыстрая проверка
Какой метод веб-запроса следует использовать при отправке формы входа с именем пользователя и паролем?
Повторение: GET и POST
Основные различия:
- GET — в адресе, можно добавить в закладки, без побочных эффектов, ограниченный размер
- POST — в теле запроса, подходит для конфиденциальных данных, без ограничения длины адреса
- Всегда используйте защищённое соединение для защиты данных GET и POST
- Проверяйте
$_SERVER['REQUEST_METHOD']перед обработкой - Применяйте шаблон PRG, чтобы предотвратить повторную отправку POST
Часто задаваемые вопросы
Урок «GET и POST: когда использовать каждый метод» бесплатный?
Да — полный текст урока «GET и POST: когда использовать каждый метод» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.
Чему я научусь в уроке «GET и POST: когда использовать каждый метод»?
Разберитесь в различиях между HTTP GET и POST в PHP Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать PHP Academy?
Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «GET и POST: когда использовать каждый метод»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке PHP Academy?
Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- GET и POST: когда использовать каждый метод
- Чтение данных формы через суперглобальные переменные
- Методы проверки входных данных
- Очистка пользовательского ввода