PHP获取POST数据的几种方法汇总
一、PHP获取POST数据的几种方法
方法1、最常见的方法是:$_POST['fieldname'];
说明:只能接收Content-Type: application/x-www-form-urlencoded提交的数据
解释:也就是表单POST过来的数据
方法2、file_get_contents("php://input");
说明:
允许读取 POST 的原始数据。
和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。
php://input 不能用于 enctype="multipart/form-data"。
解释:
对于未指定 Content-Type 的POST数据,则可以使用file_get_contents(“php://input”);来获取原始数据。
事实上,用PHP接收POST的任何数据都可以使用本方法。而不用考虑Content-Type,包括二进制文件流也可以。
所以用方法二是最保险的方法
方法3、$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 等等
解释:
$GLOBALS['HTTP_RAW_POST_DATA']存放的是POST过来的原始数据。
$_POST或$_REQUEST存放的是 PHP以key=>value的形式格式化以后的数据。
但$GLOBALS['HTTP_RAW_POST_DATA']中是否保存POST过来的数据取决于centent-Type的设置,即POST数据时 必须显式示指明Content-Type: application/x-www-form-urlencoded,POST的数据才会存放到 $GLOBALS['HTTP_RAW_POST_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内容为:
1 <xml> 2 <ToUserName><![CDATA[toUser]]></ToUserName> 3 <FromUserName><![CDATA[fromUser]]></FromUserName> 4 <CreateTime>1348831860</CreateTime> 5 <MsgType><![CDATA[text]]></MsgType> 6 <Content><![CDATA[this is a test]]></Content> 7 <MsgId>1234567890123456</MsgId> 8 <AgentID>1</AgentID> 9 </xml>
那么怎么接收这段内容呃?
这时就可以用到:方法2(file_get_contents("php://input"))、方法3($GLOBALS['HTTP_RAW_POST_DATA'])
方法2(file_get_contents("php://input")):
1 //接收POST数据 2 $input = file_get_contents("php://input"); 3 //提取POST数据为simplexml对象 4 $xml = simplexml_load_string($input); 5 var_dump($xml);
方法3($GLOBALS['HTTP_RAW_POST_DATA'])
1 $input = $GLOBALS['HTTP_RAW_POST_DATA']; 2 libxml_disable_entity_loader(true); 3 $xml = simplexml_load_string($input, 'SimpleXMLElement', LIBXML_NOCDATA); 4 var_dump($xml);
转自:http://www.jb51.net/article/61690.htm
来源:https://www.cnblogs.com/lmaster/p/6364055.html
PHP获取POST数据的几种方法汇总相关推荐
- php获取post全部数据,PHP获取POST数据的几种方法汇总_PHP教程
PHP获取POST数据的几种方法汇总 本文给大家汇总介绍了PHP获取POST数据的几种常用方法,这里分享给大家,有需要的小伙伴来参考下吧. 一.PHP获取POST数据的几种方法 方法1.最常见的方法是 ...
- php post如何获取数据,php获取POST数据的三种方法
方法一,$_POST $_POST或$_REQUEST存放的是PHP以key=>value的形式格式化以后的数据. $_POST方式是通过 HTTP POST 方法传递的变量组成的数组,是自动全 ...
- php 获取一串随机字符串,php获取随机字符串的几种方法
方法一:shuffle函数(打乱数组)和mt_rand函数(生成随机数,比rand速度快四倍) /** * 获得随机字符串 * @param $len 需要的长度 * @param $special ...
- python 行情数据,拼多多股票:Python获取股票行情数据的一种方法
Python获取股票行情数据的一种方法 拼多多股票 本号帮大家找了一个可免费获取股票行情数据的接口. Tushare社区目前主要维护新版本:tushare pro,数据更稳定拼多多股票质量更高,可获取 ...
- 前端js调用后端API获取数据的三种方法(2022.7.25)
前端js调用后台API获取数据的三种方法(2022.7.25) 前言 需求分析 一个Get实例 浏览器请求 SoapUI软件请求 一个Post实例 浏览器请求 SoapUI软件请求 1.Http简介( ...
- html中获取modelandview中的json数据_从Bitmap中获取YUV数据的两种方式
从Bitmap中我们能获取到的是RGB颜色分量,当需要获取YUV数据的时候,则需要先提取R,G,B分量的值,然后将RGB转化为YUV(根据具体的YUV的排列格式做相应的Y,U,V分量的排列) 所以这篇 ...
- ajax异步获取右侧html,Ajax异步获取html数据中包含js方法无效的解决方法
Ajax异步获取html数据中包含js方法无效的解决方法 页面上使用js写了一个获取后台数据的方法 function data() { var tab = $("#dic") $. ...
- 用旭日图展示数据的三种方法
什么是旭日图? 旭日图(Sunburst Chart)是一种现代饼图,它超越传统的饼图和环图,能表达清晰的层级和归属关系,以父子层次结构来显示数据构成情况.旭日图中,离远点越近表示级别越高,相邻两层中 ...
- pandas提取数据的6种方法
pandas提取数据的6种方法 pandas是Python数据分析必备工具,它有强大的数据清洗能力,往往能用非常少的代码实现较复杂的数据处理. 五个方面: 比较运算:.<.>.>=. ...
最新文章
- 物联网的层次结构如何划分?
- 通过进程ID得到进程名
- Python atexit模块
- Anisotropic gauss filter
- leetcode 130. Surrounded Regions | 130. 被围绕的区域(DFS递归“感染“思路)
- weblogic内存溢出linux,解决weblogic内存溢出有关问题
- 从开源软件开发中体会到的心得
- Linux Kernel 多个本地安全绕过漏洞
- 带你细品Cookie、Session和Token的区别
- 6月27日 OGDF不同的布局算法
- sqlyog与mysql编码语法_如何解决sqlyog连接的数据库乱码的问题
- 使用Word文档生成.prn文件
- java实训计算器总结_java实训报告--计算器
- 计算机语言元素周期表,多国语言的化学元素周期表
- Windows安装ElasticSearch 7.3.0
- 2018-2019-2 20189215 《网络攻防技术》第二周作业
- LOL全英雄皮肤爬虫
- 不知道如何分析选择基金、股票?Python来教你
- c语言编程实现两个分数相加,C语言分数相加
- actin/phobos后缀勒索病毒处理 百分百解密[cleverhorse@protonmail.