Мы можем разделить представления формы в трех случаях:
- Представления с типом содержимого
application/x-www-form-urlencoded
- Представления с типом содержимого
multipart/form-data
- Другие представления.
В случаях 1 и 3 $HTTP_RAW_POST_DATA
содержит необработанные данные постов (кроме случаев, когда для параметра always_populate_raw_post_data
установлено значение false
, в этом случае $HTTP_RAW_POST_DATA
пусто в случае 1), то есть данные в точности так, как их отправил клиент (обычно браузер).В случае 1 данные имеют такую форму, как
key1=value1&key2=value2&key3[]=value3.1&key3[]=value3.2
PHP автоматически анализирует это, так что $_POST
становится:
$_POST = array(
"key1" => "value1",
"key2" => "value2",
"key3" => array("value3.1", "value3.2");
)
Содержимое необработанных данных также можетдоступ через php://input
, даже в случае 1, когда always_populate_raw_post_data
установлен на false
.В частности, file_get_contents("php://input")
дает те же данные, которые $HTTP_RAW_POST_DATA
имеет или будет иметь.
В случае 3, в котором данные POST являются произвольными, $_POST
будет пустым массивом, а $HTTP_RAW_POST_DATA
всегда будетбыть заполненным.
Случай 2 особенный.В этом случае PHP проанализирует данные и $_POST
получит содержимое полей, которые не являются загруженными файлами, но php://input
и $HTTP_RAW_POST_DATA
будут недоступны.