PHP 读取原始POST数据

示例

通常,在POST请求中发送的数据是MIME类型为的结构化键/值对application/x-www-form-urlencoded。但是,许多应用程序(例如Web服务)需要发送通常以XML或JSON格式的原始数据。可以使用以下两种方法之一读取此数据。

php://input 是提供对原始请求正文的访问的流。

$rawdata = file_get_contents("php://input");
// 假设我们有JSON
$decoded = json_decode($rawdata);

5.6

$HTTP_RAW_POST_DATA是包含原始POST数据的全局变量。仅当启用always_populate_raw_post_datain指令时才可用php.ini。

$rawdata = $HTTP_RAW_POST_DATA;
// 也许我们得到XML
$decoded = simplexml_load_string($rawdata);

自PHP版本5.6起已弃用该变量,并在PHP 7.0中将其删除。

请注意,当内容类型设置为时,这两种方法均不可用multipart/form-data,用于文件上传。