HTTP
一、常见的三种 Content-Type
1, application/x-www-form-urlencoded
2, multipart/form-data
3, application/json
$_POST 默认只能接收到 Content-Type: application/x-www-form-urlencoded 的数据
二、PHP获取POST数据的三种方法
方法1、application/x-www-form-urlencoded
最常见的方法是:$_POST['keyName'];
方法2、Content-Type: application/json
需要用到php://input (php://input无法读取Content-Type为multipart/form-data的POST数据,需要设置php.ini中的always_populate_raw_post_data值为On才可以) 处理输入流 file_get_contents(“php://input”);
推送的数据内容 {"data":"密文"}
$strData = strval(file_get_contents("php://input"));
$arrData = json_decode($dataStr, true);
$decryptData = str_replace(PHP_EOL, '', $arrData['data']);//去除换行(回车换行)
方法3、使用全局变量$GLOBALS['HTTP_RAW_POST_DATA']
在$GLOBALS[‘HTTP_RAW_POST_DATA’]存放的是POST过来的原始数据。
但$GLOBALS[‘HTTP_RAW_POST_DATA’]中是否保存POST过来的数据取决于centent-Type的设置,只有在PHP在无法识别的Content-Type的情况下,才会将POST过来的数据原样地填入变量$GLOBALS[‘HTTP_RAW_POST_DATA’]中,象Content-Type=application/x-www-form-urlencoded时,该变量是空的。
另外,它同样无法读取Content-Type为multipart/form-data的POST数据,也需要设置php.ini中的always_populate_raw_post_data值为On,PHP才会总把POST数据填入变量$http_raw_post_data。

本文介绍了HTTP请求中常见的三种Content-Type类型,包括application/x-www-form-urlencoded、multipart/form-data和application/json,并详细阐述了PHP如何通过$_POST、php://input和$GLOBALS['HTTP_RAW_POST_DATA']获取不同Content-Type的POST数据。针对JSON格式的数据,文章给出了处理和解密的步骤。

606

被折叠的 条评论
为什么被折叠?



