欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php使用file_get_contents(‘php://input‘)和$_POST的區(qū)別實例對比

 更新時間:2021年03月05日 11:51:20   作者:祝君圓夢  
這篇文章主要介紹了php使用file_get_contents(‘php://input‘)和$_POST的區(qū)別實例對比,這個知識點是比較常用的,有需要的可以參考下

本文學(xué)習(xí)目的:

為什么和第三方平臺對接接口的時候,在接收http請求數(shù)據(jù)包時,一般都是用file_get_contents("php://input"),而不是用$_POST呢?

file_get_contents:將整個文件讀入一個字符串

在用php寫接口的時候,通常會將請求的數(shù)據(jù)通過json的形式發(fā)送到指定的請求地址處,此時的file_get_contents(‘php://input')主要是用來獲取請求的原始數(shù)據(jù)。和 $HTTP_RAW_POST_DATA 比起來,php://input給內(nèi)存帶來的壓力較小,并且不需要任何特殊的 php.ini 設(shè)置。

注意兩點:

數(shù)據(jù)的提交方式應(yīng)為POSTphp://input 不能用于接收enctype="multipart/form-data"表單提交的數(shù)據(jù)

1、舉一個簡單示例:

提交表單

<form action="" method="POST">
  姓名: <input type="text" name="name" value="tom" /><br />
  年齡:<input type="text" name="age" value="22" /><br />
  <input type="submit" value="Submit" />
</form>

后端控制器通過file_get_contents(‘php://input'),獲取請求原始數(shù)據(jù)流

<?php
$content = file_get_contents('php://input', 'r'); 
echo $content; 
//輸出name=tom&age=22
?>

2、在項目應(yīng)用中,如攝像頭拍照,上傳保存,就可以用到php://input??蛻舳伺恼蘸螅褕D片流傳送到服務(wù)端,服務(wù)端使用file_get_getcontents(‘php://input')就能獲取到圖片流。

$_POST

$_POST只能接收Content-Type: application/x-www-form-urlencoded提交的數(shù)據(jù),php會將http請求body相應(yīng)數(shù)據(jù)填入到數(shù)組_POST中,_POST數(shù)組中的數(shù)據(jù)是進行urldecode()解析的結(jié)果。除了該Content-Type,還有 multipart/form-data類型的表單數(shù)據(jù)也可以用$_POST接收。

四種常見的提交數(shù)據(jù)方式,分別如下:

定義和用法

enctype 屬性規(guī)定在發(fā)送到服務(wù)器之前應(yīng)該如何對表單數(shù)據(jù)進行編碼。默認地,表單數(shù)據(jù)會編碼為 "application/x-www-form-urlencoded"。就是說,在發(fā)送到服務(wù)器之前,所有字符都會進行編碼(空格轉(zhuǎn)換為 "+" 加號,特殊符號轉(zhuǎn)換為 ASCII HEX 值)。

enctype屬性值

Content-Type值 描述
application/x-www-form-urlencoded 在發(fā)送前編碼所有字符(默認)
multipart/form-data

不對字符編碼。

在使用包含文件上傳控件的表單時,必須使用該值。

text/plain 空格轉(zhuǎn)換為 "+" 加號,但不對特殊字符編碼。

text/xml

一種使用 HTTP 作為傳輸協(xié)議,XML 作為編碼方式的遠程調(diào)用規(guī)范。

總結(jié):

1、Coentent-Type僅在取值為application/x-www-data-urlencoded和multipart/form- data兩種情況下,PHP才會將http請求數(shù)據(jù)包中相應(yīng)的數(shù)據(jù)填入全局變量$_POST中。

2、PHP不能識別的Content-Type類型的時候,會將http請求包中相應(yīng)的數(shù)據(jù)填入變量$HTTP_RAW_POST_DATA中。

3、只有Coentent-Type為multipart/form-data的時候,PHP才不會將http請求數(shù)據(jù)包中的相應(yīng)數(shù)據(jù)填入php: //input,否則其它情況都會。填入的長度,由Coentent-Length指定。

4、只有Content-Type為application/x-www-data-urlencoded時,php://input數(shù)據(jù)才跟$_POST數(shù)據(jù)相一致。

5、如果不能獲取的時候,比如Coentent-Type為text/xml、application/json、soap,請使用 file_get_contents('php://input');

到此這篇關(guān)于php使用file_get_contents(‘php://input‘)和$_POST的區(qū)別實例對比的文章就介紹到這了,更多相關(guān)php使用file_get_contents和$_POST內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • ThinkPHP框架實現(xiàn)的微信支付接口開發(fā)完整示例

    ThinkPHP框架實現(xiàn)的微信支付接口開發(fā)完整示例

    這篇文章主要介紹了ThinkPHP框架實現(xiàn)的微信支付接口開發(fā),結(jié)合完整實例形式詳細分析了基于thinkPHP框架的微信支付接口操作步驟、實現(xiàn)技巧與相關(guān)注意事項,需要的朋友可以參考下
    2019-04-04
  • 完美解決Thinkphp3.2中插入相同數(shù)據(jù)的問題

    完美解決Thinkphp3.2中插入相同數(shù)據(jù)的問題

    下面小編就為大家?guī)硪黄昝澜鉀QThinkphp3.2中插入相同數(shù)據(jù)的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • php網(wǎng)上商城購物車設(shè)計代碼分享

    php網(wǎng)上商城購物車設(shè)計代碼分享

    我們要做的是一個可以包含促銷活動的購物車,所以比較其他簡單的購物車,會稍微復(fù)雜一點。(用的是PHP的zend framework框架)
    2012-02-02
  • Yii 框架應(yīng)用(Applications)操作實例詳解

    Yii 框架應(yīng)用(Applications)操作實例詳解

    這篇文章主要介紹了Yii 框架應(yīng)用(Applications)操作,結(jié)合實例形式詳細分析了Yii 框架應(yīng)用(Applications)基本配置、屬性、事件相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2020-05-05
  • thinkphp模板的包含與渲染實例分析

    thinkphp模板的包含與渲染實例分析

    這篇文章主要介紹了thinkphp模板的包含與渲染,實例分析了模板包含與渲染的用法與相關(guān)技巧,是比較實用的技巧,需要的朋友可以參考下
    2014-11-11
  • 如何使用php腳本給html中引用的js和css路徑打上版本號

    如何使用php腳本給html中引用的js和css路徑打上版本號

    這篇文章主要介紹了如何使用php腳本給html中引用的js和css路徑打上版本號,打版本號有個好處就是可以解決外部應(yīng)用文件實時更新問題,喜歡的朋友一起看看全文吧
    2015-11-11
  • php提取微信賬單的有效信息

    php提取微信賬單的有效信息

    這篇文章主要為大家詳細介紹了php提取微信賬單的有效信息,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • PHP文件讀取功能的應(yīng)用實例

    PHP文件讀取功能的應(yīng)用實例

    這篇文章主要介紹了PHP文件讀取功能的應(yīng)用實例以及常用的文件數(shù)據(jù)讀取的函數(shù)的使用方法及區(qū)別,非常的詳細,有需要的小伙伴可以參考下。
    2015-05-05
  • 讓whoops幫我們告別ThinkPHP6的異常頁面

    讓whoops幫我們告別ThinkPHP6的異常頁面

    本文給大家分享的是使用whoops接管thinkphp6的異常處理,從而使我們得到新的世界,希望大家能夠喜歡
    2020-03-03
  • Laravel中encrypt和decrypt的實現(xiàn)方法

    Laravel中encrypt和decrypt的實現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Laravel中encrypt和decrypt的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09

最新評論