前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP获取POST数据的几种方法

PHP获取POST数据的几种方法

作者头像
Mandy的名字被占用了
发布2019-07-24 14:24:37
3.2K0
发布2019-07-24 14:24:37
举报

PHP获取POST数据的几种方法

方法1、最常见的方法是:$_POST['fieldname']; 说明:只能接收Content-Type: application/x-www-form-urlencoded提交的数据 解释:也就是表单POST过来的数据

方法2、filegetcontents("php://input"); 说明: 允许读取 POST 的原始数据。 和 $HTTPRAWPOSTDATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。 php://input 不能用于 enctype="multipart/form-data"。 解释: 对于未指定 Content-Type 的POST数据,则可以使用fileget_contents(“php://input”);来获取原始数据。 事实上,用PHP接收POST的任何数据都可以使用本方法。而不用考虑Content-Type,包括二进制文件流也可以。所以用方法二是最保险的方法

方法3、$GLOBALS['HTTPRAWPOSTDATA']; 说明: 总是产生 $HTTPRAWPOSTDATA 变量包含有原始的 POST 数据。此变量仅在碰到未识别 MIME 类型的数据时产生。 $HTTPRAWPOSTDATA 对于 enctype="multipart/form-data" 表单数据不可用如果post过来的数据不是PHP能够识别的,可以用 $GLOBALS['HTTPRAWPOSTDATA']来接收,比如 text/xml 或者 soap 等等。 解释: $GLOBALS['HTTPRAWPOSTDATA']存放的是POST过来的原始数据。 $POST或$REQUEST存放的是 PHP以key=>value的形式格式化以后的数据。 但$GLOBALS['HTTPRAWPOSTDATA']中是否保存POST过来的数据取决于centent-Type的设置,即POST数据时 必须显式示指明Content-Type: application/x-www-form-urlencoded,POST的数据才会存放到 $GLOBALS['HTTPRAWPOST_DATA']中。

演示

1、PHP 如何获取POST过来的XML数据和解析XML数据 比如我们在开发微信企业号时,如何处理用户回复过来的数据呢? 文档:http://qydev.weixin.qq.com/wiki/index.php?title=%E6%8E%A5%E6%94%B6%E6%99%AE%E9%80%9A%E6%B6%88%E6%81%AF 首先查阅文档,可知道:启用开发模式后,当用户给应用回复信息时,微信服务端会POST一串XML数据到已验证的回调URL。假设该URL为 http://www.xxx.com。Http请求方式: POST http://www.xxx.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFSS×tamp=13500001234&nonce=123412323 POST的XML内容为:

代码语言:javascript
复制
<xml>
   <ToUserName><![CDATA[toUser]]></ToUserName>
   <FromUserName><![CDATA[fromUser]]></FromUserName> 
   <CreateTime>1348831860</CreateTime>
   <MsgType><![CDATA[text]]></MsgType>
   <Content><![CDATA[this is a test]]></Content>
   <MsgId>1234567890123456</MsgId>
   <AgentID>1</AgentID>
</xml>

那么怎么接收这段内容呃?这时就可以用到:方法2(filegetcontents("php://input"))、方法3($GLOBALS['HTTPRAWPOSTDATA']) 方法2(fileget_contents("php://input")):

代码语言:javascript
复制
//接收POST数据
$input = file_get_contents("php://input");
//提取POST数据为simplexml对象
$xml = simplexml_load_string($input);
var_dump($xml);

方法3($GLOBALS['HTTPRAWPOST_DATA'])

代码语言:javascript
复制
$input = $GLOBALS['HTTP_RAW_POST_DATA'];
libxml_disable_entity_loader(true);
$xml = simplexml_load_string($input, 'SimpleXMLElement', LIBXML_NOCDATA);
var_dump($xml);
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 卡二条的技术圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库一体机 TData
数据库一体机 TData 是融合了高性能计算、热插拔闪存、Infiniband 网络、RDMA 远程直接存取数据的数据库解决方案,为用户提供高可用、易扩展、高性能的数据库服务,适用于 OLAP、 OLTP 以及混合负载等各种应用场景下的极限性能需求,支持 Oracle、SQL Server、MySQL 和 PostgreSQL 等各种主流数据库。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档