php://input和$_post的差別是什麼?下面這篇文章跟大家介紹一下。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。
手冊中摘取的幾句話:
當HTTP POST 請求的Content-Type 是application/x-www-form-urlencoded 或multipart/form-data 時,會將變數以關聯陣列形式傳入目前腳本。
php://input 是個可以存取要求的原始資料的唯讀流。 enctype="multipart/form-data" 的時候php://input 是無效的。
驗證下:
post.html
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <form action="getpost.php" method="post"> <input type="text" name="name" value="saisai"> <input type="submit" name="submit" value="submit"> </form> </body> </html>
getpost.php
<?php echo "----------input--------<br />"; var_dump(file_get_contents('php://input', 'r')); echo "----------post---------<br />"; var_dump($_POST); ?>
一、enctype ="application/x-www-form-urlencoded"
請求主體:
Content-Type: application/x-www-form-urlencoded Content-Length: 25name=saisai&submit=submit
輸出:
----------input-------- string 'name=saisai&submit=submit' (length=25) ----------post--------- array (size=2) 'name' => string 'saisai' (length=6) 'submit' => string 'submit' (length=6)
小結:當enctype="application/x- www-form-urlencoded"時,請求主體(request body)中的資料(name=saisai&submit=submit)轉換成關聯數組放入$_POST,而php://input 則取得的是原始資料(raw data)。
二、enctype=「multipart/form-data」時
2.1 表單:
<form action="getpost.php" method="post" enctype="multipart/form-data"> <input type="text" name="name" value="saisai"> <input type="submit" name="submit" value="submit"> </form>
請求主題:
Content-Type: multipart/form-data; boundary=---------------------------22554656810024 Content-Length: 249 -----------------------------22554656810024 Content-Disposition: form-data; name="name" saisai -----------------------------22554656810024 Content-Disposition: form-data; name="submit" submit -----------------------------22554656810024--
輸出:
----------input-------- string '' (length=0) ----------post--------- array (size=2) 'name' => string 'saisai' (length=6) 'submit' => string 'submit' (length=6)
小結:在enctype="multipart/form-data" 且沒有上傳檔案控制項時,$_POST 能正常列印數據,php:// 無效。
2.2 表單(新增一個檔案上傳):
<form action="getpost.php" method="post" enctype="multipart/form-data"> <input type="text" name="name" value="saisai"> <input type="submit" name="submit" value="submit"> </form>
請求主題:
Content-Type: multipart/form-data; boundary=---------------------------272321281228527 Content-Length: 68386 -----------------------------272321281228527 Content-Disposition: form-data; name="name" saisai -----------------------------272321281228527 Content-Disposition: form-data; name="filename"; filename="dog.png" Content-Type: image/png 一堆乱码 -----------------------------272321281228527 Content-Disposition: form-data; name="submit" submit -----------------------------272321281228527--
輸出:
----------input-------- string '' (length=0) ----------post--------- array (size=2) 'name' => string 'saisai' (length=6) 'submit' => string 'submit' (length=6)
小結:在enctype="multipart/form -data" 且有上傳檔案控制項時,$_POST 能列印出傳入的數據,但排除了上傳的任何內容。 php:// 無效。
三、enctype="text/plain"
#表單:
<form action="getpost.php" method="post" enctype="text/plain"> <input type="text" name="name" value="saisai"> <input type="submit" name="submit" value="submit"> </form>
請求主體:
Content-Type: text/plain Content-Length: 28 name=saisai submit=submit
輸出:
----------input-------- string 'name=saisai submit=submit ' (length=28) ----------post--------- array (size=0) empty
小結:enctype="text/plain"時,$_POST中沒有內容,php://input中以鍵值對的方式存放。
總結:
當HTTP POST 請求的Content-Type 是application/x-www-form-urlencoded 或multipart/form-data :php://input 中是形同a=1&b=2的原始資料。 $_POST 中是關聯數組,且沒有上傳控制項的內容。
php://input 是可以存取要求的原始資料的唯讀流。 enctype="multipart/form-data" 的時候php://input 是無效的。
$_POST 不能取得 Content-Type = "text/plain"時 post的數據, php://input可以。
更多相關知識,請追蹤 PHP中文網! !
以上是php://input和$_post的差別是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文比較了酸和基本數據庫模型,詳細介紹了它們的特徵和適當的用例。酸優先確定數據完整性和一致性,適合財務和電子商務應用程序,而基礎則側重於可用性和

本文討論了確保PHP文件上傳的確保,以防止諸如代碼注入之類的漏洞。它專注於文件類型驗證,安全存儲和錯誤處理以增強應用程序安全性。

本文討論了在PHP中實施API速率限制的策略,包括諸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之類的庫。它還涵蓋監視,動態調整速率限制和手

本文討論了使用password_hash和pyspasswify在PHP中使用密碼的好處。主要論點是,這些功能通過自動鹽,強大的哈希算法和SECH來增強密碼保護

本文討論了OWASP在PHP和緩解策略中的十大漏洞。關鍵問題包括注射,驗證損壞和XSS,並提供用於監視和保護PHP應用程序的推薦工具。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver Mac版
視覺化網頁開發工具