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

name: Jonathan Doe

age: 23

formula: a + b == 13%!

are encoded as the following raw data:

1

name=Jonathan+Doe&age=23&formula=a+%2B+b+%3D%3D+13%25%21

$_POST

1

2

3

4

5

6

Array

(

    [name] => Jonathan Doe

    [age] => 23

    [formula] => a + b == 13%!

)

$HTTP_RAW_POST_DATA

1

2

print_r($GLOBALS['HTTP_RAW_POST_DATA'] );

name=Jonathan+Doe&age=23&formula=a+%2B+b+%3D%3D+13%25%21

php://input

1

2

3

4

$post_data = file_get_contents('php://input');

print_r($post_data);

name=Jonathan+Doe&age=23&formula=a+%2B+b+%3D%3D+13%25%21

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相关推荐

  1. PHP的php://input和$HTTP_RAW_POST_DATA 和$_POST的关系

    2019独角兽企业重金招聘Python工程师标准>>> 最近一直在写接口,顺便把 php 输入输出流相关知识点学习了一遍 理论知识 php://input php://input 数 ...

  2. APP (UniAPP) 微信支付回调的 HTTP_RAW_POST_DATA 报错情况 (wxpayv3)

    背景描述 当前我在学习 Uniapp 的应用开发,使用的是 Uniapp 官方提供的 服务端PHP源码 根据 微信支付文档-回调通知注意事项可知,支付成功后,回调地址所返回的报文必须是xml格式 从一 ...

  3. php://input $_post,浅谈PHP接收POST数据方式

    通常情况下用户使用浏览器网页表单向服务器post提交数据,我们使用PHP接收用户POST到服务器的数据,并进行适当的处理.但有些情况下,如用户使用客户端软件向服务端php程序发送post数据,而不能用 ...

  4. PHP教程:WebService最常用的两种方法

    国内用PHP写WebService的真的很少,网上资料也没多少,公司的项目开发过程中,经历了不少这方面的东西,写出来以供大家参考(谢谢老农提供的WSDL和程序文件) 客户端 代码: 01.   02. ...

  5. PHP获取POST数据的几种方法汇总

    一.PHP获取POST数据的几种方法 方法1.最常见的方法是:$_POST['fieldname']; 说明:只能接收Content-Type: application/x-www-form-urle ...

  6. php获取post全部数据,PHP获取POST数据的几种方法汇总_PHP教程

    PHP获取POST数据的几种方法汇总 本文给大家汇总介绍了PHP获取POST数据的几种常用方法,这里分享给大家,有需要的小伙伴来参考下吧. 一.PHP获取POST数据的几种方法 方法1.最常见的方法是 ...

  7. php接收二进制流,php接收二进制流【转】

    标签:binary   文件   com   post   进制   二进制   tip   form   生成文件 /** 二进制流生成文件 * $_POST 无法解释二进制流,需要用到 $GLOB ...

  8. 高级PHP应用程序漏洞审核技术

    [目录] 1. 前言 2. 传统的代码审计技术 3. PHP版本与应用代码审计 4. 其他的因素与应用代码审计 5. 扩展我们的字典 5.1 变量本身的key 5.2 变量覆盖 5.2.1 遍历初始化 ...

  9. 根据微信公众号关注/取消关注事件,获取用户信息

    第一步:微信公众平台->基本配置->服务器配置->配置接收地址 第二步:接收微信服务器推送过来的事件 微信文档地址: 关注/取消关注事件 用户在关注与取消关注公众号时,微信会把这个事 ...

  10. php 字符串转 buffer,ArrayBuffer与字符串的互相转换

    ArrayBuffer与字符串的互相转换 ArrayBuffer转为字符串,或者字符串转为ArrayBuffer,有一个前提,即字符串的编码方法是确定的.假定字符串采用UTF-16编码(JavaScr ...

最新文章

  1. 9月22日培训日记(上)
  2. c语言 搜索题油田问题,HDU1241 经典油田问题(BFS)
  3. 我们奋斗着并将持续奋斗 ----暨清华D-Lab创新基地揭牌仪式
  4. Android开发UI之GridLayout的使用
  5. 项目管理实例—— 点评
  6. 暴力破解密码 - C++ 递归方法实现
  7. vue首次赋值不触发watch
  8. 超低功耗 无线测温模块 无线测温系统, 待机数年无需更换电池
  9. 计算机地图制图相关论文,计算机地图制图原理、特点及发展趋势论文
  10. DPC(Defect Point Correction)------坏点校正
  11. 51单片机 普中V2 数字时钟 电子时钟 万年历 DS1302 LCD1602 AT24C02
  12. 华为阿里下班时间曝光:所有的光鲜,都有加班的味道
  13. CSP基础-CSP入门简介
  14. LDPC译码原理(公式推导)及其matlab代码实现(超详细)
  15. AT89C51单片机流水灯c语言程序及详解(扫盲教程)
  16. co88 sap 实际结算_SAP生产订单实际成本计算
  17. 如何提高福禄克DTX-1800的测试余量
  18. 上海、广州、北京德国签证申请中心即将重新启动
  19. 实现你的kalman
  20. osta计算机等级考试cad,Autodesk在线考试流程介绍

热门文章

  1. ubuntu 安装及相关软件安装(1)
  2. FydeOS for PC v6.0 发布,安卓子系统升级到 Pie
  3. Linux/Android——input_handler之evdev (四) 【转】
  4. MYSQL异常处理日志:主从库同步延迟时间过长的分析
  5. 无线遥控器应用在安防防盗中有怎样作用?
  6. 视频监控市场发展潜力大 六个阻碍待突破
  7. c#中两种不同的存储过程调用与比较
  8. MYSQL 大数据性能优化
  9. 黑客获取数据信息的目的和进攻手段及应对之策
  10. socketpair机制