百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

php使用file_get_contents(‘php://input‘)和$_POST的区别

moboyou 2025-07-13 21:16 14 浏览


为什么和第三方平台对接接口的时候,在接收http请求数据包时,一般都是用file_get_contents("php://input"),而不是用$_POST呢?

file_get_contents:将整个文件读入一个字符串

在用php写接口的时候,通常会将请求的数据通过json的形式发送到指定的请求地址处,此时的file_get_contents(‘php://input’)主要是用来获取请求的原始数据。和 $HTTP_RAW_POST_DATA 比起来,php://input给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。

注意两点:

数据的提交方式应为POST

php://input 不能用于接收enctype="multipart/form-data"表单提交的数据

1、举一个简单示例:

提交表单

<form action="" method="POST">

姓名: <input type="text" name="name" value="tom" /><br />

年龄:<input type="text" name="age" value="22" /><br />

<input type="submit" value="Submit" />

</form>

后端控制器通过file_get_contents(‘php://input’),获取请求原始数据流

<?php

$content = file_get_contents('php://input', 'r');

echo $content;

//输出name=tom&age=22

?>

2、在项目应用中,如摄像头拍照,上传保存,就可以用到php://input。客户端拍照后,把图片流传送到服务端,服务端使用file_get_getcontents(‘php://input’)就能获取到图片流。

$_POST

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

四种常见的提交数据方式,分别如下:

定义和用法

enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。默认地,表单数据会编码为 "
application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)。

enctype属性值

Content-Type值 描述


application/x-www-form-urlencoded 在发送前编码所有字符(默认)

multipart/form-data

不对字符编码。

在使用包含文件上传控件的表单时,必须使用该值。

text/plain 空格转换为 "+" 加号,但不对特殊字符编码。

text/xml

一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范。

总结:

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、如果不能获取的时候,比如Coentent-Type为text/xml、application/json、soap,请使用 file_get_contents('php://input');



原文链接:
https://blog.csdn.net/qq15577969/article/details/113934324

相关推荐

一个时间选择器,为何大家都不相同

在自媒体平台的定时发布功能中,看似基础的时间选择器,在不同平台却呈现出显著差异——从时间范围限制、日期展示方式,到时间精度与交互布局,各平台设计均有侧重,这些差异背后,实则是对用户场景、操作便捷性...

全新生成模型「离散分布网络DDN」如何做到原理简单,性质独特?

本文作者杨磊,目前在大模型初创公司阶跃星辰担任后训练算法工程师,其研究领域包括生成模型和语言模型后训练。在这之前,他曾在旷视科技担任了六年的计算机视觉算法工程师,从事三维视觉、数据合成等方向。他于2...

大模型“记性差一点”反而更聪明!随机剔除token,让AI不再死记硬背

训练大模型时,有时让它“记性差一点”,反而更聪明!大语言模型如果不加约束,很容易把训练数据原封不动地复刻出来。为解决这个问题,来自马里兰大学、图宾根大学和马普所的研究团队提出了一个新方法——金鱼损失(...

彩票并非纯靠运气!老彩民绝不会告诉你的,五个选号笨办法!

在许多人眼里,购买彩票纯粹是一场与命运的对赌,完全依赖于那缥缈的运气。然而,真正深入其中的老彩民们却深知,虽然最终的开奖号码随机,但在选号的过程中,确实存在一些值得琢磨的“门道”。这些方法看似“笨拙”...

老程序员爱用AI写代码:调查显示三成资深工程师一半代码靠AI生成

IT之家9月8日消息,一项新调查深入剖析了生成式人工智能(GenAI)对软件开发者日常工作的变革作用。结果显示,不同资历的工程师呈现出明显分化:资深工程师更倾向于大量使用AI生成代码,主动...

告别手动!4种批量建Excel,省时还不出错

你是不是也遇到过这种情况:月底要做报表,要给每个部门单独建一个Excel;项目汇总,每个客户都得生成一份数据文件。光是新建、命名、保存这一套流程,就得重复几十遍。鼠标点到手酸,眼睛还得紧盯着生怕出错,...

财务多个发票凑一个金额,花了1天,同事用Excel2分钟搞定

我们现在有很多发票金额,如下是模拟的数据,这里有10张发票然后总金额是固定的,是由以下的发票金额凑起来正好的数值也不确定具体是几张发票凑起来的现在需要快速的将它们找出来,正好凑好总金额遇到这种凑金额的...

调和随机数的混沌_随机调配

编者按本文来自作家、游戏智慧(Game-Wisdom.com)创始人乔希·拜瑟(JoshBycer)的个人博客,由indienova取得授权并译制发表,原文链接见文末。正文随机数生成(Rando...

大模型“记性差一点”反而更聪明,金鱼损失随机剔除token,让AI不再死记硬背

训练大模型时,有时让它“记性差一点”,反而更聪明!大语言模型如果不加约束,很容易把训练数据原封不动地复刻出来。为解决这个问题,来自马里兰大学、图宾根大学和马普所的研究团队提出了一个新方法——金鱼损失(...

彩票店老板绝不会告诉你的十个选号潜规则!早知道早中奖!

每天都有无数彩民走进彩票店,怀揣着梦想购买一两注彩票。你可曾想过,那些看似随机的数字背后,可能隐藏着一些不为人知的"潜规则"?经过多方打探和走访,我们终于整理出彩票店老板绝不会主动告诉...

Excel数据重塑利器:WRAPROWS和WRAPCOLS函数详解

WRAPROWS和WRAPCOLS是ExcelforMicrosoft365中引入的两个新函数,它们能够将单行或单列的数据按照指定的方式重新排列成多行多列的二维数组。WRAPROWS:...

生成式AI不是“通用智能”,而是“工具革命”:企业落地的3个关键思考

从ChatGPT到Midjourney,生成式AI的“魔法”正在席卷各行各业。但在热潮之下,我们更需要冷静思考:它真的具备“智能”吗?其实,生成式AI不是通用智能的雏形,而是一场信息处理方式的“工具革...

建议收藏!BigemapPro 快捷命令+函数公式大全,效率直接拉满

在使用BigemapPro处理地理数据时,熟练掌握快捷命令和函数公式能极大提升工作效率,告别重复操作,让你的地图编辑、数据处理更高效。今天,就为大家整理了一份超全的BigemapPro实用技巧,涵盖常...

Excel制作小型抽奖系统,可以内定结果,拿去用

“年会抽奖还能内定?别笑,我亲眼见过。”这句话一出,会议室瞬间安静,老板都忍不住探头。其实内定不是黑幕,而是技术——Excel就能搞定。三分钟搭好,零代码基础也能玩得飞起,关键是还能让全场嗨到尖叫。先...

告别加班!27个Excel新函数全面升级你的工作效率,新手必看!

今天我要为大家带来27个Excel新函数全面解析,这些都是微软近年来推出的重磅功能,能够让你的工作效率提升十倍不止!一、动态数组革命:彻底改变Excel计算方式FILTER函数-按条件筛选数据=F...