大叔
:二翔
咱們要作一個微信公衆號哦。我來教你大概的流程好很差?(開啓裝逼模式中 )二翔
:好啊,快講快講。(無限期待中 )大叔
:你知道 application/x-www-form-urlencoded
是什麼嘛?二翔
:啊咧咧?大叔
:你知道 php
怎麼得到 raw
?二翔
:啊咧咧?大叔
:用下面這種方法來實現。echo file_get_contents("php://input");
二翔
:啊咧咧?二翔
:php://input
是什麼東西?大叔
:嘿嘿,本身去了解吧。<!--more-->php
POST日常看起來人畜無害,可是有句話說的好。最可怕的不是鬼怪,而是人心(Content-Type)。POST在明面上,只有一個老婆叫作application/x-www-form-urlencoded
,其實他一共有好幾個伴侶。html
鍵值妹
:application/x-www-form-urlencoded
文件妹
:multipart/form-data
多胞胎
:raw
java
text/plain
text/html
text/xml
application/json
application/xml
application/javascirpt
咱們想知道POST
內心裝着的人是誰怎麼辦呢,此次請出感情專家 postman
來幫忙。git
POST 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
<?php var_dump($_POST);
array(2) { ["name"]=> string(6) "lionis" ["sex"]=> string(3) "man" }
application/x-www-form-urlencoded
是經常使用的表單發包方式,普通的表單提交,默認都是經過這種方式。 對於PHP用$_POST
得到鍵值對。github
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
<?php var_dump($_POST); var_dump($_FILES);
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
得到鍵值對。json
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" }
<?php var_dump(file_get_contents('php://input'));
string(47) "{ "user": "xieyuandong", "sex": "man" }"
raw
能夠上傳json
,xml
,文本
等等。對於PHP用php://input
得到內容。微信
能夠獲 Content-Type
爲 application/x-www-form-urlencoded
或者 multipart/form-data
的請求。app
$POST
不能獲取的方式,都會存儲在HTTP_RAW_POST_DATA
,用$GLOBALS['HTTP_RAW_POST_DATA']
接收。給內存
帶來的壓力較大,而且須要 php.ini
設置。post
容許讀取 POST
的原始數據。給內存
帶來的壓力較小,而且不須要 php.ini
設置。不能用於 enctype="multipart/form-data"
。url
在php 7
中已經取消了HTTP_RAW_POST_DATA
,咱們平時使用$POST
和php://input
就行了。
在困惑的城市裏總少不了並肩同行的
夥伴
讓咱們一塊兒成長。
點贊
。小星星
。m353839115
。本文原稿來自 PushMeTop