Основные способы определения метода запроса
Использование суперглобального массива $_SERVER
ВыделитьPHP
$method = $_SERVER['REQUEST_METHOD'];
if ($method === 'GET') {
// Обработка GET-запроса
} elseif ($method === 'POST') {
// Обработка POST-запроса
}Использование константы PHP_SAPI (менее надёжный способ)
ВыделитьPHP
if (php_sapi_name() === 'cgi-fcgi' && $_SERVER['REQUEST_METHOD'] === 'POST') {
// POST-запрос
}Через функцию filter_input
ВыделитьPHP
$method = filter_input(INPUT_SERVER, 'REQUEST_METHOD');Практическое применение
ВыделитьPHP
switch ($_SERVER['REQUEST_METHOD']) {
case 'GET':
// Обработка GET-запроса
$data = $_GET;
break;
case 'POST':
// Обработка POST-запроса
$data = $_POST;
break;
default:
http_response_code(405); // Метод не разрешён
echo 'Метод запроса не поддерживается';
break;
}Дополнительные методы проверки
Проверка наличия данных POST
ВыделитьPHP
if (!empty($_POST)) {
// Вероятно, POST-запрос
}Проверка через php_input
ВыделитьPHP
if (fopen('php://input', 'r')) {
// Возможно POST-запрос
}Рекомендации по использованию
- Основной способ — использование
$_SERVER['REQUEST_METHOD']. - Валидация данных всегда должна производиться дополнительно, независимо от метода запроса.
- Безопасность: не доверяйте только типу запроса, проверяйте все входные данные.
- Обработка ошибок: всегда предусматривайте обработку неизвестных методов запроса.
Пример полного обработчика
ВыделитьPHP
<?php
// Определяем метод запроса
$method = $_SERVER['REQUEST_METHOD'];
// Проверяем допустимость метода
if (!in_array($method, ['GET', 'POST'])) {
http_response_code(405);
exit('Метод запроса не поддерживается');
}
// Обработка в зависимости от метода
switch ($method) {
case 'GET':
$data = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING);
// Логика обработки GET
break;
case 'POST':
$data = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
// Логика обработки POST
break;
}