你所不知道的 POST

2021-03-02 全棧開發者中心
 0.說明

  echo file_get_contents("php://input");

二翔 :啊咧咧?

二翔 :php://input是什麼東西?

大叔 :嘿嘿,自己去了解吧。

 1.無情浪子 POST  編故事

  POST平常看起來人畜無害,但是有句話說的好。最可怕的不是鬼怪,而是人心(Content-Type)。POST在明面上,只有一個老婆叫做application/x-www-form-urlencoded,其實他一共有好幾個伴侶。

 2.辨別真心 Content-Type  0.說明

  我們想知道POST心裡裝著的人是誰怎麼辦呢,這次請出感情專家 postman 來幫忙。

  1.application/x-www-form-urlencoded

  截圖

  報文

POST  HTTP/1.1Host: 127.0.0.1Cache-Control: no-cachePostman-Token: 4f2704aa-81e6-be22-4c36-8787ba945a22Content-Type: application/x-www-form-urlencodedname=lionis&sex=man

  服務端代碼

<?php    var_dump($_POST);

  輸出

array(2) {  ["name"]=>  string(6) "lionis"  ["sex"]=>  string(3) "man"}

  結論

  application/x-www-form-urlencoded是常用的表單發包方式,普通的表單提交,默認都是通過這種方式。 對於PHP用$_POST獲得鍵值對。

  2.multipart/form-data

  截圖

  報文

POST  HTTP/1.1Host: 127.0.0.1Cache-Control: no-cachePostman-Token: f7640c52-6667-b4e8-aee8-02b0e1656969Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW----WebKitFormBoundary7MA4YWxkTrZu0gWContent-Disposition: form-data; name="name"lionis----WebKitFormBoundary7MA4YWxkTrZu0gWContent-Disposition: form-data; name="sex"man----WebKitFormBoundary7MA4YWxkTrZu0gWContent-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獲得鍵值對。

  3.raw

  截圖

  報文

POST  HTTP/1.1Host: 127.0.0.1Content-Type: application/jsonCache-Control: no-cachePostman-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獲得內容。

 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就好了。

via:https://github.com/zhangxiangliang/your-dont-know-series/blob/master/your-dont-know-post.md

相關焦點

  • postpost到底在賣啥?(穿戴篇)
    開篇先慶祝一下今年4月20日開張的postpost挺過了半歲,離百年老字號又近了一步!這6個月的時間裡正在閱讀的你可能已經來過了,翻過柜子上的書也喝過了咖啡水,甚至我們和你已經成為了好朋友,但是我猜大部分的你可能還是對postpost的商店部分有些好奇:不知道裡面賣的是什麼鬼。
  • jQuery - AJAX post() 方法
    jQuery $.post() 方法$.post() 方法通過 HTTP POST 請求向伺服器提交數據。語法:$.post(URL,data,callback);必需的 URL參數規定您希望請求的 URL。
  • $.get與$.post高級實現
    jQuery.get(url,[data],[callback],[type]) :Ajax中的get請求 jQuery.post(url,[data],[callback],[type]) :Ajax中的post請求參數說明:url :請求的url
  • 網絡爬蟲——Requests,GET和POST
    latest/安裝方式:pip install requests二、Requests模塊get請求(一)、網絡請求當客戶端發送一個請求,伺服器收到這個請求後就會將請求所對應的響應返回給客戶端2、post請求:post請求是向伺服器提交一些內容,比如表單等。
  • Get 和 Post 區別
    瀏覽器的get和post有什麼區別?第1個從他們字面意思去理解這些,就是從網頁上獲取一個數據。然後這個獲取數據是對伺服器不會產生副作用的,術語就是數學上的 冪等即多次操作不產生影響(比如任何數乘1或者乘0,多次乘之後,都不會變化),那樣多次操作也不會去產生副作用。
  • Post-truth當選牛津詞典年度詞彙
    《牛津詞典》宣布post-truth(後真相)為2016年度詞彙,這個詞反應了這一年政治領域「高度緊張」的狀態。詞典將post-truth定義為形容詞,描述的是客觀事實對公眾意見的影響沒有感性訴求產生的影響大這樣一個狀況。Its selection follows June's Brexit vote and the US presidential election. 這個詞當選是拜6月份英國脫歐公投和美國總統大選所賜。
  • 手把手教你怎樣第一次在healthpost海淘就具有海淘老手的氣質!新技能GET
    使用這個攻略之前大家首先需要知道要買的東西的商品列表頁面(也就是英文的catalog page),小編整理了一些大家比較喜歡的商品分類,主要用途和直達連結,請看下面~保健品類:英文名中文名用途如果不知道哪個產品比較好,果斷從前幾名內選就行了。作為一個每天發送幾千單的國際網站,小編覺得別的顧客的選擇還是有一定參考價值的。還有童鞋比較憤世嫉俗,不太信任賣出數量(和某寶上月銷過千的面膜一個道理。。。),那麼我們來看一看高級排序,注意下面這個紅圈處,點那個藍色的箭頭。
  • 防曬霜清倉活動馬上就要結束,還不趕緊來搶購幾瓶?| HealthPost
    但如果真的想要保護家人的皮膚健康,只知道使用防曬霜並不夠,你還得:儘量選擇天然成分的物理防曬霜。這意味著在出門遊玩曬太陽之前不需要再等待20分鐘了!其他在選購防曬霜時要注意的事項選擇防曬霜的兩大原則:選天然的,不要選擇化學成份的讀到這裡你可能先是點頭然後又搖頭:明白啦,選天然物理防曬霜!但是我怎麼知道什麼成分是天然的啊?
  • Post-truth是個事麼?OED更新詞彙(二)
    Post-truth 後真相牛津辭典2016年度詞彙post-truth也在此次更新中被收錄到OED當中。Post-truth驗證了post-前綴組成單詞的普遍使用,表達某個特定的概念已經不重要或不相關了。較早post組成的單詞包括post-national以及 post-racial。
  • 【新聞】今年 Canada Post 聖誕截郵日期
    如果你打算發送包裹到全國任何地方,最遲期限會根據你使用哪種加拿大郵政運送的方式而有所不同。如果你打算使用 Priority Mail (優先郵件),那麼你可以在12月21日之前郵寄便可。第二快的選項是 Xpresspost, 截郵日期和本地郵件相同。(全國運送的物品都應在12月18日之前寄出。)
  • Filecoin 解讀|贏得PoST的是什麼?
    ))rand, err := m.api.ChainGetRandomness(ctx, base.TipSet.Key(), crypto.DomainSeparationTag_WinningPoStChallengeSeed, base.TipSet.Height()+base.NullRounds, nil) prand := abi.PoStRandomness(rand) postProof
  • 【HealthPost聖誕大促】Living Nature系列全線買2贈1!
    當一個包裝極簡卻不失格調的Living Nature產品到達你的手上時你知道它背後的故事麼?/living-nature-manuka-honey-gel-lnrg-g.htmlLiving Nature Vitalising CleanserHP售價:166RMB市場價:191RMB溫和去除雜質和妝容,不損耗皮膚本身水分潔面以後皮膚乾淨且水潤氣味很好聞,很容易卸掉眼妝用了以後皮膚很乾淨,柔軟
  • 讓你瞬間高大上的英文縮寫 你知道幾個?
    英文中常見的拉丁文縮寫,估計很多人知道意思但不會讀,也不知道縮寫所代表的字母:   A.D. (公元): Anno Domini   CV (簡歷): curriculum vitae   e.g. (例如): exempli gratia   etc.
  • 你所不知道的——「母親節」
    你所不知道的——「母親節」 2020-05-11 02:38 來源:澎湃新聞·澎湃號·政務
  • 最近的HealthPost高質量分享都在這兒了!
    Mamiru,julia_yong875,bingwawa518,葡萄小丸子 Mamiru: mamiru的紐西蘭healthpost曬單+7款單品心得(四)亮白淡痘印精華、助消化茶,護髮素等http://www.letsebuy.com/forum.php?
  • 可插拔的跨域聊天機器人實現方案復盤(postMessage版)
    你將學到 跨域技術常用方案介紹 postMessage實現跨域通信 如何實現聊天機器人 node搭建本地伺服器來實現渲染頁面和跨域 回答語料庫設計思路效果預覽跨域技術常用方案介紹首先要強調的是跨域的安全限制都是對瀏覽器端來說的,伺服器端是不存在跨域安全限制的。
  • 你所不知道的射手座
    射手座崇尚自由,勇敢、果斷、獨立,身上有一股勇往直前的勁兒,不管有多困難,只要想,就能做,你的毅力和自信是難以擊倒的。射手男酷愛自由,討厭被束縛,射手女性格簡單直接,不耍心機,只是有點任性。
  • Post Malone's Tattoos
    它變成了你的一部分,你甚至沒有注意到」- /www.gq.com/story/post-malone-tattoo-tourLil Peep Portrait馬龍一直很喜歡Lil Peep和他的音樂2017年Lil Peep突然去世後,馬龍將他的肖像文在左臂上,以表達他對Lil Peep的愛和感情「在我認識你的短短時間裡
  • Post-traumatic hemothorax ( 創傷後血胸)
    Differential:  Post-traumatic fibrothorax, post-infectious fibrothorax, post-empyema fibrothorax.     -鑑別診斷:創傷後纖維胸、感染後纖維胸、膿胸後纖維胸。
  • 你所不知道的甜杏仁油
    然而最高品質的甜杏仁油是以冷壓法壓制果仁所獲得的,此法可獲得高達50%的杏仁油,之後再加以過濾澄清。歐碧家就採取相同的義大利冷榨技術,充分保留了甜杏仁油的營養,製成有機香氛沐浴露。利用甜杏仁原油營養,通過沐浴露中豐富細膩的泡沫,達到柔軟肌膚、抗皺美白的效果。在此基礎中,進一步促進組織再生,對面皰肌膚有著良好的調理作用。還可以有效應對背部和身體皮膚痤瘡痘痘、皮膚粗糙、色素沉著及身體紋路。