0.说明
大叔 :二翔 我们要做一个微信公众号哦。我来教你大概的流程好不好?(开启装逼模式中 )
二翔 :好啊,快讲快讲。(无限期待中 )
大叔 :你知道 application/x-www-form-urlencoded是什么嘛?
二翔 :啊咧咧?
大叔 :你知道 php 怎么获得 raw?
二翔 :啊咧咧?
大叔 :用下面这种方法来实现。
echo file_get_contents("php://input");
二翔 :啊咧咧?
二翔 :php://input是什么东西?
大叔 :嘿嘿,自己去了解吧。
1.无情浪子 POST 编故事POST平常看起来人畜无害,但是有句话说的好。最可怕的不是鬼怪,而是人心(Content-Type)。POST在明面上,只有一个老婆叫做application/x-www-form-urlencoded,其实他一共有好几个伴侣。
键值妹:application/x-www-form-urlencoded
文件妹:multipart/form-data
多胞胎:raw
text/plain
text/html
text/xml
application/json
application/xml
application/javascirpt
2.辨别真心 Content-Type 0.说明我们想知道POST心里装着的人是谁怎么办呢,这次请出感情专家 postman 来帮忙。
1.application/x-www-form-urlencodedPOST HTTP/1.1 Host: 127.0.0.1 Cache-Control: no-cache Postman-Token: 4f2704aa-81e6-be22-4c36-8787ba945a22 Content-Type: application/x-www-form-urlencoded name=lionis&sex=man
输出
array(2) { ["name"]=> string(6) "lionis" ["sex"]=> string(3) "man" }结论
application/x-www-form-urlencoded是常用的表单发包方式,普通的表单提交,默认都是通过这种方式。 对于PHP用$_POST获得键值对。
2.multipart/form-data报文
POST HTTP/1.1 Host: 127.0.0.1 Cache-Control: no-cache Postman-Token: f7640c52-6667-b4e8-aee8-02b0e1656969 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="name" lionis ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="sex" man ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="avater"; filename="" Content-Type: ----WebKitFormBoundary7MA4YWxkTrZu0gW服务端代码
输出
array(2) { ["name"]=> string(6) "lionis" ["sex"]=> string(3) "man" } array(1) { ["avater"]=> array(5) { ["name"]=> string(36) "0CD0A5235EDCDAAB4AFE05B25695E696.png" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(45) "/Applications/XAMPP/xamppfiles/temp/phpeFfc9e" ["error"]=> int(0) ["size"]=> int(9485) } }结论
multipart/form-data 用在发送文件的POST包。对于PHP用$_FILE获取文件内容,用$_POST获得键值对。
3.raw报文
POST HTTP/1.1 Host: 127.0.0.1 Content-Type: application/json Cache-Control: no-cache Postman-Token: 9e0c339b-a6b0-c534-5c62-63ef8dc887c4 { "user": "xieyuandong", "sex": "man" }服务端代码
输出
string(47) "{ "user": "xieyuandong", "sex": "man" }"结论
raw可以上传json,xml,文本等等。对于PHP用php://input获得内容。
3.$_POST vs php://input vs HTTP_RAW_POST_DATA 1.$_POST可以获 Content-Type 为 application/x-www-form-urlencoded 或者 multipart/form-data 的请求。
2.HTTP_RAW_POST_DATA$POST不能获取的方式,都会存储在HTTP_RAW_POST_DATA,用$GLOBALS["HTTP_RAW_POST_DATA"] 接收。给内存带来的压力较大,并且需要 php.ini 设置。
3.php://input允许读取 POST 的原始数据。给内存带来的压力较小,并且不需要 php.ini 设置。不能用于 enctype="multipart/form-data"。
4.结论在php 7中已经取消了HTTP_RAW_POST_DATA,我们平时使用$POST和php://input就好了。
一起成长在困惑的城市里总少不了并肩同行的 伙伴 让我们一起成长。如果您想让更多人看到文章可以点个 点赞。
如果您想激励小二可以到 Github 给个 小星星。
如果您想与小二更多交流添加微信 m353839115。
本文原稿来自 PushMeTop
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/21816.html
你所不知道的 URL 0.说明 第一幕 产品:大叔有用户反映账户不能绑定公众号。大叔:啊咧咧?怎么可能,我看看?大叔:恩?这也没问题啊,魏虾米。大叔:还是没问题啊,挖叉类。大叔:T T,话说产品姐姐是不是Java提供接口的时候,没有对URL进行encodeURI。产品:啊咧咧?我问问看? 第二幕 大叔:小二你给我过来!小二:啊咧咧?怎么了大叔?大叔:知道在URL中的+有时候会变成什么吗?小二:啊咧...
前言 很多的小伙伴在,学习 PHP 的时候最早面对的问题之一就是 require 、 include 和 require_once 、include_once 的相爱相杀。 在了解了它们相爱相杀的故事后,往往就开始使用起了框架。框架固然是干活的好工具,但是你知道你平时 new 一个新类的时候,发生了什么吗?有想过为什么我们 遵循规范 就会自动的帮我们做好一切的加载吗? 让我们一切来探索发现其中的奥...
摘要:已经逐渐替代被全世界的开发者广泛使用。函数将一个对象转换成文本化的。不能被文本化的属性会被忽略。和例外情况在数组中,不可被的元素用填充。自从年双十一正式上线,累计处理了亿错误事件,得到了金山软件等众多知名用户的认可。 译者按: 老司机们,你知道JSON.stringify还有第二个和第三个可选参数吗?它们是什么呢? 原文: What you didn’t know about JSO...
摘要:恺英网络程序经理张皓聪在上,做了直播平台系统实战的主题分享,介绍了直播平台系统的搭建过程。张皓聪年加入恺英网络,先后负责过多款手游页游项目,对和有深入研究。确保所有的压力是平均的。 分享 | 张皓聪(恺英网络程序经理) 整理 | 西北 2016年10月29日,由又拍云举办的Open Talk No.26在魔都上海3W空间成功举办,此次活动主要邀请直播领域开发一线的技术大神们聊一聊直播平...
阅读 2949·2023-04-25 18:00
阅读 2195·2021-11-23 10:07
阅读 3994·2021-11-22 09:34
阅读 1206·2021-10-08 10:05
阅读 1558·2019-08-30 15:55
阅读 3337·2019-08-30 11:21
阅读 3282·2019-08-29 13:01
阅读 1336·2019-08-26 18:26