Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深入剖析PHP输入流 php://input

深入剖析PHP输入流 php://input

作者头像
猿哥
发布于 2019-07-24 14:29:50
发布于 2019-07-24 14:29:50
1.6K0
举报
文章被收录于专栏:Web技术布道师Web技术布道师

$data = file_get_contents("php://input");

php://input 是个可以访问请求的原始数据的只读流。 POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA,因为它不依赖于特定的 php.ini 指令。 而且,这样的情况下 $HTTP_RAW_POST_DATA 默认没有填充, 比激活 always_populate_raw_post_data 潜在需要更少的内存。 enctype="multipart/form-data" 的时候 php://input 是无效的。

1, php://input 可以读取http entity body中指定长度的值,由Content-Length指定长度,不管是POST方式或者GET方法提交过来的数据。但是,一般GET方法提交数据 时,http request entity body部分都为空。

2,php://input 与$HTTP_RAW_POST_DATA读取的数据是一样的,都只读取Content-Type不为multipart/form-data的数据。

学习笔记

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为空。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PHP技术大全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PHP输入流php://input
在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组。所以,这里主要探讨php输入流php://input
黄规速
2022/04/14
13.8K0
一文搞懂$_POST和php://input的区别
今天来说一说 $_POST、file_get_contents("php://input")和$GLOBALS['HTTP_RAW_POST_DATA']的区别,这三个方法都是用来接收post请求的,但是很少有人说出他们的区别是啥,下面就来说一说
PHP学习网
2022/08/03
6890
file_get_contents(“php://input”)的使用方法「建议收藏」
无意中看到我们与前端通信的这个基本参数,不是很明白对应的意思,找了篇相关文章:http://my.oschina.net/u/267858/blog/519403
全栈程序员站长
2022/02/10
3.3K0
PHP中file_get_contents的使用方法
$data = file_get_contents("php://input");
用户7657330
2020/08/14
2.7K0
PHP输入流php://input介绍
在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组。所以,这里主要探讨php输入流php://input 对一php://input介绍,PHP官方手册文档有一段话对它进行了很明确地概述。 “php://input allows you to read raw POST data. It is a less memory intensive alternative to $HTTP_RAW_POST_DATA and does n
wangxl
2018/03/07
2.2K0
POST 提交数据的时候参数有哪些类型?
1. HTTP 协议是以 ASCII 码 传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。
房东的狗丶
2023/02/17
7960
$_POST,$HTTP_RAW_POST_DATA 和 php://input 的区别
PHP 7 已经取消了 $HTTP_RAW_POST_DATA,请用 php://input 代替。
Denis
2023/04/15
2.8K0
PHP发送和接收JSON请求
现在微服务中,很多API由于需要传递的参数较多所以要求用包含所有参数的JSON数据作为POST请求的请求体来替代FormData传递参数的方式,在参数量较多时POST JSON要比POST FormData便于开发和测试,今天我们就来看一下在PHP中如何发送和接受JOSN POST,以及在Laravel框架中针对JSON Request提供的访问JSON请求数据的便捷方法。
KevinYan
2019/10/13
8.4K0
PHP获取POST数据的几种方法
方法1、最常见的方法是:$_POST['fieldname']; 说明:只能接收Content-Type: application/x-www-form-urlencoded提交的数据 解释:也就是表单POST过来的数据
兔云小新LM
2019/07/24
3.5K0
PHP获取HTTP body内容的方法总结
有时候我们获取数据时需要根据Header中的格式来解析,比如上传一个json而不是一个文本。这里用到了 php输入|输出流 的概念。
猿哥
2019/07/24
3.2K0
post提交数据的常见方式及php对应的接收方法
post提交数据的方式,主要体现在http协议头上的Content-Type字段,不同的Content-Type对应不同的http请求体,与之相应的php接收数据方法也不同。
跑马溜溜的球
2020/12/07
1.9K0
C# HTTP系列10 form表单的enctype属性
在ASP.NET编程中经常遇到下面的代码片段,将人员信息以表单方式提交到后台程序并保存到服务器与数据库中。
张传宁IT讲堂
2019/09/18
1.1K0
C# HTTP系列10 form表单的enctype属性
变着花样来接参,PHP中接收外部参数的方式
对于PHP这样一个web语言来说,接参是非常重要的一个能力。毕竟从前端表单或异步请求传递上来的数据都要获取到才能进行正常的交互展示。当然,这也是所有能够进行web开发的语言的必备能力。今天我们就来看看PHP各种各样的接参形式。
硬核项目经理
2020/04/26
2.1K0
PHP 构造 multipart/form-data 格式 POST 请求体的方法
最近在尝试基于 PHP 做一个反向代理 HTTP 的程序,其中一个需求是将程序收到的HTTP请求还原回 RFC2616 的原始格式。
zgq354
2019/11/24
5.1K0
post请求包含哪些参数(请求方式post和get)
1)、HTTP 协议是以 ASCII 码 传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。 2)、协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须 使用什么编码方式 。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。 3)、数据发送出去,还要服务端解析成功才有意义。一般服务端语言如 php、python 等,以及它们的 framework,都内置了自动解析常见数据格式的功能。服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。
全栈程序员站长
2022/07/29
4.1K0
python接口自动化(十)--post请求四种传送正文方式(详解)
  post请求我在python接口自动化(八)--发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等。我们要知道post请求四种传送正文方式首先需要先了解一下常见的四种编码方式:
北京-宏哥
2019/09/11
3.6K0
python接口自动化(十)--post请求四种传送正文方式(详解)
php接收二进制流(图片)生成图片文件文件
报错:Undefined index: HTTP_RAW_POST_DATA的解决办法
全栈程序员站长
2022/07/11
2.3K0
【PHP7源码分析】PHP中$_POST揭秘
前几天的工作中,需要通过curl做一次接口测试。让我意外的是,通过$_POST竟然无法获取到Content-Type是application/json的http请求的body参数。 查了下php官网对$_POST的描述,的确是这样。 后来通过file_get_contents("php://input")获取到了原始的http请求body,然后对参数进行json_decode解决了接口测试的问题。事后,脑子里面冒出了挺多问题:
桶哥
2019/06/04
6.5K0
【PHP7源码分析】PHP中$_POST揭秘
PHP 用户请求数据获取与文件上传
我们上篇教程提到,要获取 HTTP 请求数据,可以通过 $_GET、$_POST、$_REQUEST 等 PHP 内置的超全局变量,如果要获取 Cookie 和文件上传信息,可以通过额外的 $_COOKIE 和 $_FILES。今天,学院君就来给大家演示下如何使用这些超全局变量获取请求数据。
学院君
2020/08/04
2.7K0
jmeter处理http请求Content-Type类型和传参方式
  我们在做接口测试的时候经常会忽略数据类型content-type的格式,以及参数Parameters和Body Data的区别和用途。
全栈测试开发日记
2023/02/18
2.3K0
jmeter处理http请求Content-Type类型和传参方式
相关推荐
PHP输入流php://input
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档