request_parse_body

(PHP 8 >= 8.4.0)

request_parse_bodyВозвращает результат считывания и разбора тела запроса

Описание

request_parse_body(?array $options = null): array

Функция считывает и разбирает тело запроса с учётом типа содержимого, который указали в заголовке Content-Type. Поддерживается два типа содержимого:

  • application/x-www-form-urlencoded
  • multipart/form-data

При отправке запросов в формате multipart/form-data HTTP-методом POST движок автоматически считывает входной буфер, чтобы заполнить суперглобальные массивы $_POST и $_FILES, при этом входной буфер опустошается, поэтому главное назначение функции — разбор тела запросов с другими HTTP-глаголами.

Предостережение

Тело запроса возможно прочитать из входного буфера только один раз. После считывания входного буфера функцией request_parse_body() тело запроса не буферизуется в поток php://input. Справедливо и обратное: функция request_parse_body() вернёт пустые данные, если входной буфер уже опустел, например после считывания тела запроса через обёртку php://input.

Список параметров

options
Параметр options принимает ассоциативный массив с настройками для разбора, которые переопределяют следующие глобальные директивы файла php.ini:
  • max_file_uploads
  • max_input_vars
  • max_multipart_body_parts
  • post_max_size
  • upload_max_filesize

Возвращаемые значения

Функция request_parse_body() возвращает пару массивов: массив в индексе 0 эквивалентен суперглобальному массиву $_POST, а массив в индексе 1 — суперглобальному массиву $_FILES.

Ошибки

Функция выбрасывает исключение RequestParseBodyException, когда тело запроса не соответствует формату данных заголовка Content-Type.

Функция выбрасывает ошибку ValueError, когда аргумент options содержит недопустимые ключи или недопустимые значения ключей.

Примеры

Пример #1 Пример разбора тела запроса функцией request_parse_body()

<?php

// Разбор запроса и сохранение результата в суперглобальных массивах $_POST и $_FILES
[$_POST, $_FILES] = request_parse_body();

// Вывод содержимого файла, который передали в запросе
echo file_get_contents($_FILES['file_name']['tmp_name']);

Пример #2 Пример разбора тела запроса функцией request_parse_body() с модифицированными настройками

<?php

// form.php

assert_logged_in();

// Разрешение большего размера загрузки только для этой формы
[$_POST, $_FILES] = request_parse_body([
'post_max_size' => '10M',
'upload_max_filesize' => '10M',
]);

// Обработка файлов, которые загрузили...
Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top