前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >file_get_contents(“php://input”)的使用方法「建议收藏」

file_get_contents(“php://input”)的使用方法「建议收藏」

作者头像
全栈程序员站长
发布2022-02-10 08:31:03
2.9K0
发布2022-02-10 08:31:03
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是全栈君。

代码语言:javascript
复制
$this->must=json_decode(@file_get_contents(‘php://input’),true);

无意中看到我们与前端通信的这个基本参数,不是很明白对应的意思,找了篇相关文章:http://my.oschina.net/u/267858/blog/519403

data = file_get_contents(“php://input”);php://input 是个可以访问请求的原始数据的只读流。 POST 请求的情况下,最好使用 php://input 来代替 HTTP_RAW_POST_DATA,因为它不依赖于特定的 php.ini 指令。  而且,这样的情况下

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为空。7、file_get_contents(“php://input”)就可以获取非enctype=”multipart/form-data”提交过来的数据8、@file_get_contents(“php://input”)加上@是屏蔽对应的错误9、json_decode(@file_get_contents(“php://input”) ,true),由于我们与前端协定的数据是json,所以我们对接收到的数据内容进行json解析,以便抓取对应的数据进行使用。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112141.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档