2019-10-13一个php7获取POST数据的坑

自己用微信公众号搭建了一个查单词的消息响应接口,升级php7之后发现用不了了,发送过去没有任何回应。

用微信自带的调试工具试了试,提示

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

语句中的HTTP_RAW_POST_DATA键不存在。改为

$postStr = $_POST;

发现根本没有获取到post数据,搜了半天发现一篇文章中提示要改为:

$postStr = file_get_contents("php://input");

修改后,一切恢复正常

引用:

//传统获取方式

$postStr = $GLOBALES['HTTP_RAW_POST_DATA'];

//php7之后取消了HTTP_RAW_POST_DATA方式获取 应改为

$postStr = file_get_contents("php://input");

//扩展一下

/**

$_POST: 常用于application/x-www.form-urlencoded方式的数据提交 如 表单提交 文件上传

file_get_contents("php://input"): 常用于非enctype="multipart/form-data"的数据提交

HTTP_RAW_POST_DATA: 常用于无法识别的数据格式,如能被$_POST识别 这这里取不到值。

设置 php.ini 中的 always_populate_raw_post_data 值为 On 才会生效

php7之后不支持。

终上: 关联数组键值对方式提交的数据 使用$_POST $_POST无法获取时,

使用php://input

**/

你可能感兴趣的:(2019-10-13一个php7获取POST数据的坑)