Что такое HTTP_RAW_POST_DATA?

Возник вопрос:
что такое HTTP_RAW_POST_DATA?

ВНИМАНИЕ:
С PHP 5.6.0 рекомендуется не использовать $HTTP_RAW_POST_DATA, этот функционал полностью исключен в PHP 7.0.0

Разберемся:

1) Что это такое?
$HTTP_RAW_POST_DATA содержит необработанные (сырые) POST-данные.
т.е. если мы передаем через POST следующий массив данных:
(
[name] => John
[time] => 2pm
)

то в $HTTP_RAW_POST_DATA будет следующая строка:
name=John&time=2pm

2) Как можно достучаться еще к данной переменной?
Три равнознычных способа:
$HTTP_RAW_POST_DATA
$GLOBALS[‘HTTP_RAW_POST_DATA’]
file_get_contents(‘php://input’)

3) Переменная $HTTP_RAW_POST_DATA недоступна. Что делать?
— в php.ini включить always_populate_raw_post_data = On , что позволит всегда заполнять переменную $HTTP_RAW_POST_DATA
— обратиться к данным через file_get_contents(‘php://input’) . Данный способ не зависит от директив в php.ini.
— использовать какой-нибудь неопознанный MIME тип данных (например: $HTTP_RAW_POST_DATA не формируется при типах: multipart/form-data и application/x-www-form-urlencoded и работает при типе application/octet-stream)

4) Почему массив $_POST пустой, хотя данные точно передаются ?
Т.к. эти данные не получилось обработать и они просто находятся в $HTTP_RAW_POST_DATA

5) Что такое: php://input ?
php://input является потоком только для чтения, который позволяет вам читать необработанные данные из тела запроса. В случае POST-запросов предпочтительней использовать php://input вместо $HTTP_RAW_POST_DATA, так как этот метод не зависит от специальных php.ini директив. Кроме того, в тех случаях, где $HTTP_RAW_POST_DATA не заполняется по умолчанию, это потенциально менее затратно для памяти, чем активация директивы always_populate_raw_post_data. php://input не доступен с типом содержимого enctype=»multipart/form-data».

6) Можно показать на примере, что такое $HTTP_RAW_POST_DATA ?
Пожалуйста:
Пример

Что такое HTTP_RAW_POST_DATA?: 1 комментарий

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *