今天来说一说 $_POST、file_get_contents(“php://input”)和$GLOBALS[‘HTTP_RAW_POST_DATA’]的区别,这三个方法都是用来接收post请求的,但是很少有人说出他们的区别是啥,下面就来说一说

一、$_POST[‘paramName’]

只能接收Content-Type: application/x-www-form-urlencoded提交的数据,php会将http请求body相应数据会 填入到数组$_POST,填入到$_POST数组中的数据是进行urldecode()解析的结果。(其实,除了该Content-Type,还有 multipart/form-data表示数据是表单数据)

二、file_get_contents(“php://input”)

适用大多数类型的Content-type,php://input 允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。php://input 不能用于 enctype=”multipart/form-data”。

三、$GLOBALS[‘HTTP_RAW_POST_DATA’];

总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据。此变量仅在碰到未识别 MIME 类型的数据时产生。$HTTP_RAW_POST_DATA 对于 enctype=”multipart/form-data” 表单数据不可用。

特别注意此方式在php版本低的时候,并且php.ini配置开启always_populate_raw_post_data值为On可以使用,php7之后就废弃了。

总结一下

1、Coentent-Type仅在取值为application/x-www-data-urlencoded和multipart/form- data两种情况下,PHP才会将http请求数据包中相应的数据填入全局变量$_POST

2、PHP不能识别的Content-Type类型的时候,会将http请求包中相应的数据填入变量$HTTP_RAW_POST_DATA

3、 只有Coentent-Type不为multipart/form-data的时候,PHP不会将http请求数据包中的相应数据填入php: //input,否则其它情况都会。填入的长度,由Coentent-Length指定。

4、只有Content-Type为application/x-www-data-urlencoded时,php://input数据才 跟$_POST数据相一致。

5、php://input数据总是跟$HTTP_RAW_POST_DATA相同,但是php://input 比$HTTP_RAW_POST_DATA更凑效,且不需要特殊设置php.ini

6、PHP会将PATH字段的query_path部分,填入全局变量$_GET。通常情况下,GET方法提交的http请求,body为空。

总之:

1、如果是 application/x-www-form-urlencoded 和 multipart/form-data 格式 用 $_POST;

2、如果不能获取的时候比如 text/xml、application/json、soap,使用 file_get_contents(‘php://input’);

看完这个大家应该明白为啥我们和第三方平台对接接口的时候用file_get_contents(“php://input”)比较多。

php input 只接收文件内容,一文搞懂$_POST和file_get_contents(“php://input”)的区别相关推荐

  1. php中读取文件内容的几种方法。(file_get_contents:将文件内容读入一个字符串)...

    php中读取文件内容的几种方法.(file_get_contents:将文件内容读入一个字符串) 一.总结 php中读取文件内容的几种方法(file_get_contents:将文件内容读入一个字符串 ...

  2. Docker入门到精通开发指南(一文搞懂)

    文章目录 安装 官方安装文档 具体安装步骤 1.卸载之前的版本(如果之前未用过忽略该步骤) 2.安装相关依赖 3.设置docker镜像 4.安装docker 安装latest版本 指定版本安装 5.启 ...

  3. CSS边框、边距、轮廓(边框宽度/颜色/各边/简写属性/圆角边框/内外边距/高度宽度/框模型/轮廓宽度/颜色/属性/偏移)——万字长文|一文搞懂

    目录 CSS边框 CSS 边框属性 CSS 边框样式 实例 CSS 边框宽度 实例 特定边的宽度 实例 CSS 边框颜色 实例 特定边框的颜色 实例 HEX 值 实例 RGB 值 实例 HSL 值 实 ...

  4. 批量处理word文件内容_word文档批量处理大师

    优秀的资源工具可以让你事半功倍! 资源下载请 回复 "领取资源"  自助领取. word文档批量处理大师软件精致,简单易用,针对性强,是特别针对Office办公软件中的Word文档 ...

  5. java读取文件内容,文件头有\ufeff

    "\ufeff"是UTF-8 BOM编码的文件头,代表该文件按照什么字节顺序排序 调用java的工具类[ UnicodeInputStream ]即可解决这个问题 //第二个参数t ...

  6. html读取input type=file文件内容

    <input id="uploadInput" type="file" class="file_input" name="m ...

  7. Linux 给文件内容添加 文件头

    例: COOOOOOOOOOOO1 _Ml_N_20191010_00000010.TXT 统计文本中的记录数,然后插入到文本的第一行,命令如下: sed -i "1i 01|编号|`cat ...

  8. fseek linux 大文件_一文搞懂Linux系统开发

    文章目录 Linux系统开发会用到什么? C语言基础 shell脚本 慢慢学会使用Makefile 常规Linux系统编程知识都有什么?哪些常用?哪些不常用? 常规Linux编程知识 文件IO 文件与 ...

  9. 纸鸢|物联协议只M-BUS详解一文即懂

    文章详细介绍了M-Bus仪表总线,包括总线结构.总线的通信协议,及其在远程抄表中的应用. 家用公共事业仪表通过扩展M-Bus总线,使其具有与M-Bus仪表总线通讯的功能,从而实现远程抄表. 介绍 M- ...

最新文章

  1. js ftpclient linux server,Node.JS用Socket实现FTP Server服务器和Client客户端
  2. Java并发之同步的产生及解决
  3. python 绘制柱状图-「Python」python绘制图表
  4. SQL查询入门(下篇)
  5. GridView 自写分页 存储过程
  6. (教学思路 c#之类一)声明类和对象、定义类成员及其引用
  7. Grace Ex助力区块链数字资产迈向全新未来
  8. win server 缓冲区队列不足_有赞延迟队列设计
  9. (转)调用System.gc没有立即执行的解决方法
  10. python判断一个数是否是质数
  11. js 返回上一页面_pdf.js实战,含水印、电子签章解决方案
  12. L1L2 Regularization的原理
  13. Android Studio快捷键-mac版
  14. 查看谁连接oracle,oracle如何查看当前有哪些用户连接到数据库
  15. 《Redis开发与运维》读书笔记
  16. iis启动 服务无法在此时接受控制信息。 (异常来自 HRESULT:0x80070425)
  17. python 假设检验
  18. linux批量化删除以某某结尾命令
  19. 钢条切割问题(动态规划)
  20. 计算机组成fc fz是什么,计算机组成原理实验二

热门文章

  1. C#学习-程序集和反射
  2. SQL Server 索引结构及其使用
  3. 已有数据表的Mysql字符编码修改
  4. 漫天飞舞的蒲公英你是我的幸福吗
  5. python提取列表中文本_python提取图像的名字*.jpg到txt文本的方法
  6. 基于android4的第三方系统,神速!第三方开发者放出小米3/4原生Android Oreo刷机包...
  7. Python批量整理文件名小案例(附公众号第一批赠书活动中奖名单)
  8. Python计算任意单调曲线在给定区间上的近似长度
  9. 使用Python开发会聊天的智能小机器人
  10. Python tkinter版猜数游戏