php input 只接收文件内容,一文搞懂$_POST和file_get_contents(“php://input”)的区别
今天来说一说 $_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”)的区别相关推荐
- php中读取文件内容的几种方法。(file_get_contents:将文件内容读入一个字符串)...
php中读取文件内容的几种方法.(file_get_contents:将文件内容读入一个字符串) 一.总结 php中读取文件内容的几种方法(file_get_contents:将文件内容读入一个字符串 ...
- Docker入门到精通开发指南(一文搞懂)
文章目录 安装 官方安装文档 具体安装步骤 1.卸载之前的版本(如果之前未用过忽略该步骤) 2.安装相关依赖 3.设置docker镜像 4.安装docker 安装latest版本 指定版本安装 5.启 ...
- CSS边框、边距、轮廓(边框宽度/颜色/各边/简写属性/圆角边框/内外边距/高度宽度/框模型/轮廓宽度/颜色/属性/偏移)——万字长文|一文搞懂
目录 CSS边框 CSS 边框属性 CSS 边框样式 实例 CSS 边框宽度 实例 特定边的宽度 实例 CSS 边框颜色 实例 特定边框的颜色 实例 HEX 值 实例 RGB 值 实例 HSL 值 实 ...
- 批量处理word文件内容_word文档批量处理大师
优秀的资源工具可以让你事半功倍! 资源下载请 回复 "领取资源" 自助领取. word文档批量处理大师软件精致,简单易用,针对性强,是特别针对Office办公软件中的Word文档 ...
- java读取文件内容,文件头有\ufeff
"\ufeff"是UTF-8 BOM编码的文件头,代表该文件按照什么字节顺序排序 调用java的工具类[ UnicodeInputStream ]即可解决这个问题 //第二个参数t ...
- html读取input type=file文件内容
<input id="uploadInput" type="file" class="file_input" name="m ...
- Linux 给文件内容添加 文件头
例: COOOOOOOOOOOO1 _Ml_N_20191010_00000010.TXT 统计文本中的记录数,然后插入到文本的第一行,命令如下: sed -i "1i 01|编号|`cat ...
- fseek linux 大文件_一文搞懂Linux系统开发
文章目录 Linux系统开发会用到什么? C语言基础 shell脚本 慢慢学会使用Makefile 常规Linux系统编程知识都有什么?哪些常用?哪些不常用? 常规Linux编程知识 文件IO 文件与 ...
- 纸鸢|物联协议只M-BUS详解一文即懂
文章详细介绍了M-Bus仪表总线,包括总线结构.总线的通信协议,及其在远程抄表中的应用. 家用公共事业仪表通过扩展M-Bus总线,使其具有与M-Bus仪表总线通讯的功能,从而实现远程抄表. 介绍 M- ...
最新文章
- js ftpclient linux server,Node.JS用Socket实现FTP Server服务器和Client客户端
- Java并发之同步的产生及解决
- python 绘制柱状图-「Python」python绘制图表
- SQL查询入门(下篇)
- GridView 自写分页 存储过程
- (教学思路 c#之类一)声明类和对象、定义类成员及其引用
- Grace Ex助力区块链数字资产迈向全新未来
- win server 缓冲区队列不足_有赞延迟队列设计
- (转)调用System.gc没有立即执行的解决方法
- python判断一个数是否是质数
- js 返回上一页面_pdf.js实战,含水印、电子签章解决方案
- L1L2 Regularization的原理
- Android Studio快捷键-mac版
- 查看谁连接oracle,oracle如何查看当前有哪些用户连接到数据库
- 《Redis开发与运维》读书笔记
- iis启动 服务无法在此时接受控制信息。 (异常来自 HRESULT:0x80070425)
- python 假设检验
- linux批量化删除以某某结尾命令
- 钢条切割问题(动态规划)
- 计算机组成fc fz是什么,计算机组成原理实验二
热门文章
- C#学习-程序集和反射
- SQL Server 索引结构及其使用
- 已有数据表的Mysql字符编码修改
- 漫天飞舞的蒲公英你是我的幸福吗
- python提取列表中文本_python提取图像的名字*.jpg到txt文本的方法
- 基于android4的第三方系统,神速!第三方开发者放出小米3/4原生Android Oreo刷机包...
- Python批量整理文件名小案例(附公众号第一批赠书活动中奖名单)
- Python计算任意单调曲线在给定区间上的近似长度
- 使用Python开发会聊天的智能小机器人
- Python tkinter版猜数游戏