Я пытаюсь понять смысл исходных данных. На странице руководства PHP для $HTTP_RAW_POST_DATA
просто указывается, что эта переменная содержит Raw POST data
.
Когда эта переменная будет установлена и в чем смысл исходных данных?
Я понимаю $_POST
но полностью смущен $HTTP_RAW_POST_DATA
Запрос HTTP состоит из двух частей. Набор заголовков и тела.
Заголовки включают такие вещи, как запрашиваемый URL-адрес и кэширование управляющих помощников (например, «У меня есть версия этого со вчерашнего дня, только дайте мне новый, если есть изменения, ОК?»).
Тело может появляться или не отображаться в зависимости от типа запроса. Запросы POST имеют органы.
Тело может быть в любом формате, который нравится клиенту. Один из заголовков сообщает серверу, что такое формат.
Существует несколько форматов, используемых форматами HTML, а PHP знает, как их анализировать и помещать данные в $_POST
.
Если данные находятся в другом формате, таком как JSON, или если данные не соответствуют причудам PHP (например, правила наличия []
в конце ключей с тем же именем), вы можете захотеть получить доступ к данным так что вы можете разобрать его самостоятельно.
Это необработанные данные POST.
$_POST
можно сказать как и результат после разделения $HTTP_RAW_POST_DATA
, php разбивает исходные данные и форматы сообщений так, как мы видим это в $_POST
Например:
$HTTP_RAW_POST_DATA
выглядит примерно так:
key1=value1&key2=value2
то
$_POST
будет выглядеть так:
$_POST = array( "key1" => "value1", "key2" => "value2",);
HTTP – это текстовый протокол, поэтому все данные передаются как строки. Когда вы работаете с $_POST
– у вас уже есть переданные данные, обработанные для вас в форме массива. Это делается с помощью php автоматически до того, как элемент управления будет передан вашему скрипту.
Таким образом, в исходных данных сообщений есть данные, которые были переданы через сеть.
Вероятно, вы увидите данные a=1&b=2
, как видите в URL-адресах
Одна из вещей, которую вы можете сделать с протоколом http, – это выполнить запрос POST, который отправляет некоторый текст обратно на сервер.
$HTTP_RAW_POST_DATA
будет содержать этот текст, независимо от того, что он говорит.
В большинстве случаев, когда мы выполняем запрос POST, мы добавим «текст контента» к отправляемому тексту. Это сообщает серверу, какой контент он имеет. В большинстве случаев в Интернете мы отправляем тип контента как «application / x-www-form-urlencoded».
Когда сервер получает запрос POST с этим маркером контента, сервер будет знать, чтобы попытаться превратить данные в массив $_POST
чтобы «test = hello» стал:
$_POST['test']='hello'
$HTTP_RAW_POST_DATA
содержит необработанные данные POST, например:
Как правило, вместо $HTTP_RAW_POST_DATA.
следует использовать php://input
$HTTP_RAW_POST_DATA.
потому что эта функция была DEPRECATED с PHP 5.6.0. Опираясь на эту функцию, очень не рекомендуется.
Источник: php.net – $ HTTP_RAW_POST_DATA