php $_POST接收数据的几种方式

490 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。php $_POST接收数据的几种方式

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=jsondecode(arrData = json_decode(dataStr, true);

decryptData=strreplace(PHPEOL,,decryptData = str_replace(PHP_EOL, '', arrData['data']);//去除换行(回车换行)

方法3、使用全局变量$GLOBALS['HTTP_RAW_POST_DATA']

GLOBALS[HTTPRAWPOSTDATA]存放的是POST过来的原始数据。但GLOBALS[‘HTTP_RAW_POST_DATA’]存放的是POST过来的原始数据。 但GLOBALS[‘HTTP_RAW_POST_DATA’]中是否保存POST过来的数据取决于centent-Type的设置,只有在PHP在无法识别的Content-Type的情况下,才会将POST过来的数据原样地填入变量GLOBALS[HTTPRAWPOSTDATA]中,象ContentType=application/xwwwformurlencoded时,该变量是空的。另外,它同样无法读取ContentTypemultipart/formdataPOST数据,也需要设置php.ini中的alwayspopulaterawpostdata值为OnPHP才会总把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。 ———————————————— 版权声明:本文为CSDN博主「木子李0531」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/lfbin5566/a…