1、当Coentent-Type = application/x-www-data-urlencoded 时
1.1 $_POST的值为数组 数组的值为发过来的参数;
1.2 file_get_contents("php://input");的值为字符串"jjjj=asdjhkjashd&asd=asd" 并且这个字符串不符合json的规范 无法用json_decode($str, true); 转化成对象
2、当Coentent-Type = multipart/form-data 时
1.1$_POST的值为数组 数组的值为发过来的参数;
1.2 file_get_contents("php://input");无法获取到数据
3、当Coentent-Type = application/json时
1.1 $_POST无法获取到数据;
1.2 file_get_contents("php://input");的值为json格式的字符串{"ceshi":"ceshi","ooooo":"OK","jjjjj":{"jjjj":"asdas","asdasd":"asdasd"},"array":["asdasd","asdasd"]} 可以用json_decode($str, true); 转化成对象
4、总结
0、php://input数据总是跟$HTTP_RAW_POST_DATA相同,但是php://input比$HTTP_RAW_POST_DATA更凑效,且不需要特殊设置php.ini
1、Coentent-Type仅在取值为application/x-www-data-urlencoded和multipart/form-data两种情况下,PHP才会将http请求数据包中相应的数据填入全局变量$_POST
2、只有Coentent-Type为multipart/form-data的时候,PHP不会将http请求数据包中的相应数据填入php://input,否则其它情况都会。填入的长度,由Coentent-Length指定。
3、php://input 与$HTTP_RAW_POST_DATA读取的数据是一样的,都只读取Content-Type不为multipart/form-data的数据。
4、php://input 可以读取http entity body中指定长度的值,由Content-Length指定长度,不管是POST方式或者GET方法提交过来的数据。但是,一般GET方法提交数据 时,http request entity body部分都为空。
5、php://input 数据总是跟$HTTP_RAW_POST_DATA相同,但是php://input比$HTTP_RAW_POST_DATA更凑效,且不需要特殊设置php.ini