php有获取post参数的方法吗-PHP问题

资源魔 15 0

php猎取post参数的几种形式

PHP默许辨认的数据类型是application/x-www.form-urlencoded规范的数据类型。

一、$_POST['paramName'] 只有正在Content-Type为application/x-www-form-urlencoded或许为multipart/form-data的 时分,PHP才会将http申请数据包中的body相应局部数据填入$_POST全局变量中,其它状况PHP都疏忽。填入到$_POST数组中的数据是进行urldecode()解析的后果。

二、file_get_contents("php://input") 实用年夜少数类型的Content-type

php://input 容许读取 POST 的原始数据。以及 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,而且没有需求任何非凡的 php.ini 设置。php://input 不克不及用于 enctype="multipart/form-data"。

三、$GLOBALS['HTTP_RAW_POST_DATA']; 老是孕育发生 $HTTP_RAW_POST_DATA 变量蕴含有原始的 POST 数据。此变量仅正在碰着未辨认 MIME 类型的数据时孕育发生。$HTTP_RAW_POST_DATA 关于 enctype="multipart/form-data" 表复数据不成用。

假如post过去的数据没有是PHP可以辨认的,你能够用 $GLOBALS['HTTP_RAW_POST_DATA']来接纳,比方 text/xml 或许 soap 等等。需求设置php.ini中的always_populate_raw_post_data值为On,PHP才会总把POST数据填入变 量$http_raw_post_data。

看民间文档,正在高版本里,这个变量$HTTP_RAW_POST_DATA被弃用了
This feature wasDEPRECATEDin PHP 5.6.0, andREMOVEDas of PHP 7.0.0. In general,php://inputshould be used instead of$HTTP_RAW_POST_DATA.

总结:

1,Coentent-Type仅正在取值为application/x-www-data-urlencoded以及multipart/form- data两种状况下,PHP才会将http申请数据包中相应的数据填入全局变量$_POST

2,PHP不克不及辨认的Content-Type类型的时分,会将http申请包中相应的数据填入变量$HTTP_RAW_POST_DATA

3, 只有Coentent-Type没有为multipart/form-data的时分,PHP才会将http申请数据包中的相应数据填入php: //input,不然其它状况城市。填入的长度,由Coentent-Length指定。

4,只有Content-Type为application/x-www-data-urlencoded时,php://input数据才 跟$_POST数据相分歧。

5,php://input数据老是跟$HTTP_RAW_POST_DATA相反,都只读取Content-Type没有为multipart/form-data的数据,然而php://input 比$HTTP_RAW_POST_DATA更凑效,且没有需求非凡设置php.ini

6,PHP会将PATH字段的query_path局部,填入全局变量$_GET。通常状况下,GET办法提交的http申请,body为空。

7,php://input读取没有到$_GET数据。是由于$_GET数据作为query_path写正在http申请头部(header)的PATH字 段,而没有是写正在http申请的body局部。

八、假如是 application/x-www-form-urlencoded 以及 multipart/form-data 格局 用 $_POST;

九、假如不克不及猎取的时分,比方 text/xml、application/json、soap,应用 file_get_contents('php://input');

保举教程:《PHP教程》

以上就是php有猎取post参数的办法吗的具体内容,更多请存眷资源魔其它相干文章!

标签: php php教程 php故障解决 php使用问题

抱歉,评论功能暂时关闭!