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

file_get_contents(“php://input”)的使用方法

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

$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 指令。 
 而且,这样的情况下 $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为空。
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.net/112141.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java自学视频整理(持续更新中…)

    Java自学视频整理(持续更新中…)1.Java基础视频 《张孝祥JAVA视频教程》完整版[RMVB](东西网)历经5年锤炼(史上最适合初学者入门的Java基础视频)(传智播客)张孝祥2010年贺岁视频:Java高新技术(传智播客)Java多线程与并发库高级应用(传智播客)尚学堂JAVA视频下载大全(持续更新中…请关注!)(尚学堂)《动力节点,王勇JAVA系列视频教程》(东西网)张孝祥Java高新技术

    2022年7月8日
    21
  • Vue进阶(幺零七):arr.forEach() 跳出循环

    Vue进阶(幺零七):arr.forEach() 跳出循环我们都知道for循环里要跳出整个循环是使用break,但在数组中用forEach循环如要退出整个循环呢?使用break会报错,使用return也不能跳出循环。使用break将会报错:vararr=[1,2,3,4,5];varnum=3;arr.forEach(function(v){if(v==num){break;}console.log(v);});使…

    2022年6月4日
    123
  • A4988驱动步进电机「建议收藏」

    A4988驱动步进电机「建议收藏」A4988一般用arduino来驱动,我是用STM32F103驱动的。首先推一个网页,https://www.pololu.com/product/1182,上面有比较详细和专业的说明,还有一个关于限制电流使细分更精确的视频讲解,总之,专业。然后推一个datasheet,https://www.pololu.com/file/0J450/a4988_DMOS_microstepping_driver

    2022年6月16日
    19
  • 电子书包“翻转”课堂

    电子书包“翻转”课堂在联想·知好乐电子书包发布会上,一场别开生面的现场教学示范引起了与会者的极大兴趣。北京教育学院的王春老师借助联想·知好乐电子书包,创新出一种名为“翻转课堂”的教学模式,就是将原来课堂上老师教授新知的环节“翻转”为课前学生自主学习,并将原来课下学生的知识内化过程“翻转”到课上。与会的教育行业专家认为,这是一种更符合学习规律、更尊重学生认知的高效的教学方式。  据同方知好乐教育公司(以下简称知好乐)总…

    2022年10月19日
    0
  • SQL最常用的语句

    SQL最常用的语句语法:一步步由浅到深,这里用的都是mysql做的。基础:连接数据库:mysql-h10.20.66.32-uroot-p1234561-h后面是mysqlServer所在地址,-u后面是用户名,-p后面是密码。查看数据库showdatabases;1使用数据库usetest;1查看表showtables;1查看表结构descwinton1建表createtablet1(…

    2022年6月22日
    19
  • BN层详解_罗盘第一层详解

    BN层详解_罗盘第一层详解批量归一化(BN:BatchNormalization:解决在训练过程中,中间层数据分布发生改变的问题,以防止梯度消失或爆炸、加快训练速度)1、为什么输入数据需要归一化(NormalizedData)?归一化后有什么好处呢?原因在于神经网络学习过程本质就是为了学习数据分布,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低;另外一方面,一旦每批训练数据的分布各不相同(batch梯度下降),那么网络就要在每次迭代都去学习适应不同的分布,这样将会大大降低网络的训练速度,…

    2022年10月15日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号