浏览器的请求方式主要是get和post,在这里主要讲下获取post参数的几种常用方法。
最常见的方法是:
$_POST[‘paraname’] ;
$_POST是个数组,是post方法发送的变量名和变量值,
存放的是 PHP以key=>value的形式格式化以后的数据。
这是在进行web开法时最常用的方式, 但 此种方法有局限性,
只能接收Content-Type: application/x-www-form-urlencoded提交的数据 ,
我们必须通过一个表单(真实或模拟)来进行提交。
但是此种方式在进行接口(如给APP提供接口)开发时,就不是很方便了。
这个时候,使用:
file_get_contents(“php://input”);将会非常的便捷。
用PHP接收POST的任何数据都可以使用本方法。而不用考虑Content-Type。
注意:
也可以使用$HTTP_RAW_POST_DATA 来获取数据,
但是使用file_get_contents(“php://input”)给内存带来的压力较小,并且不需要任何特殊的 php. ini 设置。
但是不能用于 enctype=”multipart/form-data”。
这样的情况下$HTTP_RAW_POST_DATA默认没有填充,
比激活
always_populate_raw_post_data
潜在需要更少的内存。
但$GLOBALS[‘HTTP_RAW_POST_DATA’]中
是否保存POST过来的数据取决于centent-Type的设置,
即POST数据时
必须显式示指明
Content-Type: application/x-www-form-urlencoded,
POST的数据才会存放到
$GLOBALS[‘HTTP_RAW_POST_DATA’]中。
php://input是个可以访问请求的原始数据的只读流。
在微信中传递的是 xml格式 的数据以发送xml格式数据为例:
//接收POST数据
$data = file_get_contents(“php://input”);
//提取POST数据为simplexml对象
$xml = simplexml_load_string($data);
var_dump($xml);
这样一来,解析数据将会变得简洁,方便。
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~