php POST,HTTP_RAW_POST_DATA, and php://input
1、HTML <form> enctype Attribute
- application/x-www-form-urlencoded 传送之前所有的字符都会被encoded,(spaces 被转换为+、特殊字符被转换为ASCII HEX)
- multipart/form-data 没有字符被encoded,一般用upload
- text/plain Spaces被转换为 + ,但是特殊字符不会被encoded
For example, the key-value pairs
1 2 3 |
|
are encoded as the following raw data:
1 |
|
$_POST
1 2 3 4 5 6 |
|
$HTTP_RAW_POST_DATA
1 2 |
|
php://input
1 2 3 4 |
|
2、$_POST
$_POST是最常用的获取表单的方式,它是以关联数组方式组织提交的数据,并对此进行编码处理,如urldecode,甚至编码转换,识别的数据类型是PHP默认识别的数据类型 application/x-www.form-urlencoded
无法解析如text/xml,application/json等非 application/x-www.form-urlencoded 数据类型的内容
3、$HTTP_RAW_POST_DATA
PHP默认识别的数据类型是application/x-www.form-urlencoded,用Content-Type=application/json 类型,提交的POST数据这时候 POST就无法获取到了,但是使用POST就无法获取到了,但是使用GLOBALS['HTTP_RAW_POST_DATA'] 可以获取到。因为在PHP无法识别Content-Type的时候,就会把 POST 数据填入到 $HTTP_RAW_POST_DATA 中。
设置 php.ini 中的 always_populate_raw_post_data 值为 On 才会生效
当POST可以取到值时POST可以取到值时HTTP_RAW_POST_DATA 为空
不能用于 enctype="multipart/form-data"
PHP7中已经移除了这个全局变量,用 php://input 替代,使用 always_populate_raw_post_data 会导致在填充 $HTTP_RAW_POST_DATA 时产生
E_DEPRECATED
错误。 请使用php://input 替代 $HTTP_RAW_POST_DATA, 因为它可能在后续的 PHP 版本中被移除。 设置always_populate_raw_post_data 为 -1 (这样会强制 $HTTP_RAW_POST_DATA 未定义,所以也不回导致E_DEPRECATED
的错误) 来体验新的行为。
4、php://input
php://input 可通过输入流以文件读取方式取得未经处理的POST原始数据,允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小。
不需要任何特殊的 php.ini 设置
不能用于 enctype="multipart/form-data"
总结
1、如果是 multipart/form-data 和 application/x-www-form-urlencoded 格式 用 $_POST
2、如果不能获取的时候比如 application/json 使用 file_get_contents('php://input')
转载:https://www.cnblogs.com/chenpingzhao/p/4985212.html
php POST,HTTP_RAW_POST_DATA, and php://input相关推荐
- PHP的php://input和$HTTP_RAW_POST_DATA 和$_POST的关系
2019独角兽企业重金招聘Python工程师标准>>> 最近一直在写接口,顺便把 php 输入输出流相关知识点学习了一遍 理论知识 php://input php://input 数 ...
- APP (UniAPP) 微信支付回调的 HTTP_RAW_POST_DATA 报错情况 (wxpayv3)
背景描述 当前我在学习 Uniapp 的应用开发,使用的是 Uniapp 官方提供的 服务端PHP源码 根据 微信支付文档-回调通知注意事项可知,支付成功后,回调地址所返回的报文必须是xml格式 从一 ...
- php://input $_post,浅谈PHP接收POST数据方式
通常情况下用户使用浏览器网页表单向服务器post提交数据,我们使用PHP接收用户POST到服务器的数据,并进行适当的处理.但有些情况下,如用户使用客户端软件向服务端php程序发送post数据,而不能用 ...
- PHP教程:WebService最常用的两种方法
国内用PHP写WebService的真的很少,网上资料也没多少,公司的项目开发过程中,经历了不少这方面的东西,写出来以供大家参考(谢谢老农提供的WSDL和程序文件) 客户端 代码: 01. 02. ...
- PHP获取POST数据的几种方法汇总
一.PHP获取POST数据的几种方法 方法1.最常见的方法是:$_POST['fieldname']; 说明:只能接收Content-Type: application/x-www-form-urle ...
- php获取post全部数据,PHP获取POST数据的几种方法汇总_PHP教程
PHP获取POST数据的几种方法汇总 本文给大家汇总介绍了PHP获取POST数据的几种常用方法,这里分享给大家,有需要的小伙伴来参考下吧. 一.PHP获取POST数据的几种方法 方法1.最常见的方法是 ...
- php接收二进制流,php接收二进制流【转】
标签:binary 文件 com post 进制 二进制 tip form 生成文件 /** 二进制流生成文件 * $_POST 无法解释二进制流,需要用到 $GLOB ...
- 高级PHP应用程序漏洞审核技术
[目录] 1. 前言 2. 传统的代码审计技术 3. PHP版本与应用代码审计 4. 其他的因素与应用代码审计 5. 扩展我们的字典 5.1 变量本身的key 5.2 变量覆盖 5.2.1 遍历初始化 ...
- 根据微信公众号关注/取消关注事件,获取用户信息
第一步:微信公众平台->基本配置->服务器配置->配置接收地址 第二步:接收微信服务器推送过来的事件 微信文档地址: 关注/取消关注事件 用户在关注与取消关注公众号时,微信会把这个事 ...
- php 字符串转 buffer,ArrayBuffer与字符串的互相转换
ArrayBuffer与字符串的互相转换 ArrayBuffer转为字符串,或者字符串转为ArrayBuffer,有一个前提,即字符串的编码方法是确定的.假定字符串采用UTF-16编码(JavaScr ...
最新文章
- 9月22日培训日记(上)
- c语言 搜索题油田问题,HDU1241 经典油田问题(BFS)
- 我们奋斗着并将持续奋斗 ----暨清华D-Lab创新基地揭牌仪式
- Android开发UI之GridLayout的使用
- 项目管理实例—— 点评
- 暴力破解密码 - C++ 递归方法实现
- vue首次赋值不触发watch
- 超低功耗 无线测温模块 无线测温系统, 待机数年无需更换电池
- 计算机地图制图相关论文,计算机地图制图原理、特点及发展趋势论文
- DPC(Defect Point Correction)------坏点校正
- 51单片机 普中V2 数字时钟 电子时钟 万年历 DS1302 LCD1602 AT24C02
- 华为阿里下班时间曝光:所有的光鲜,都有加班的味道
- CSP基础-CSP入门简介
- LDPC译码原理(公式推导)及其matlab代码实现(超详细)
- AT89C51单片机流水灯c语言程序及详解(扫盲教程)
- co88 sap 实际结算_SAP生产订单实际成本计算
- 如何提高福禄克DTX-1800的测试余量
- 上海、广州、北京德国签证申请中心即将重新启动
- 实现你的kalman
- osta计算机等级考试cad,Autodesk在线考试流程介绍