溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP如何獲取HTTP POST中不同格式的數(shù)據(jù)

發(fā)布時間:2020-10-13 17:45:36 來源:億速云 閱讀:619 作者:小新 欄目:編程語言

這篇文章主要介紹PHP如何獲取HTTP POST中不同格式的數(shù)據(jù),文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

HTTP協(xié)議中的POST 方法有多中格式的數(shù)據(jù)協(xié)議,在HTTP的head中用不同的Content-type標識.常用的有

application/x-www-form-urlencoded,這是最常見的,就是from表單的格式.在HTTP的head中是Content-Type: application/x-www-form-urlencoded.

multipart/form-data,這個是用來上傳文件的,在HTTP的head中是Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

Raw 這個不是特別常用,傳輸?shù)臄?shù)據(jù)在HTTP的body中只有一段,不是以鍵值對的形式存放.在HTTP的head中是Content-Type: application/json,Content-Type: text,Content-Type: application/xml,Content-Type: text/xml,等等形式

對于Content-Type: application/x-www-form-urlencoded這種form表單的數(shù)據(jù),在php中,使用$_POST['name']可以直接獲取, 沒有什么特別的

Content-Type: multipart/form-data; 這種格式的數(shù)據(jù),在php中使用$_POST['name']可以獲取字符數(shù)據(jù),使用$_FILES['file']可以獲取.

對于Raw這種格式的數(shù)據(jù),使用以上兩種辦法沒有辦法獲取到,需要使用別的手段.

1.使用file_get_contents("php://input")獲取;寫一個簡單php文件測試一下

<?php
$test=file_get_contents("php://input");
echo $test;

用postman測試一下

PHP如何獲取HTTP POST中不同格式的數(shù)據(jù)

沒問題,可以接收到

2.使用$GLOBALS['HTTP_RAW_POST_DATA']接收

<?php
$test=$GLOBALS['HTTP_RAW_POST_DATA'];
echo $test;

用postman測試一下

PHP如何獲取HTTP POST中不同格式的數(shù)據(jù)

臥槽,竟然出錯了,提示沒有發(fā)現(xiàn)HTTP_RAW_POST_DATA這個數(shù)組索引,什么鬼.Google一番,在php的官網(wǎng)看到了這樣一段話

PHP如何獲取HTTP POST中不同格式的數(shù)據(jù)

原來HTTP_RAW_POST_DATA這個在php5.6中已經(jīng)被廢棄了,在php7.0以后的版本中已經(jīng)被刪除了,我用的php版本為7.2,肯定就出錯了

好吧,那就老老實實的用file_get_contents("php://input")獲取吧

在實際開發(fā)中,一般都是使用框架的,我用thinkphp用比較多,在tp5.0中可以使用Request的getInput()函數(shù)獲取Raw中的數(shù)據(jù)

<?php

namespace app\index\controller;

use think\Request;

class Index
{
    public function index(Request $request)
    {
        echo $request->getInput();
    }
}

測試一下

PHP如何獲取HTTP POST中不同格式的數(shù)據(jù)

以上是PHP如何獲取HTTP POST中不同格式的數(shù)據(jù)的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI