PHP获取HTTP POST中不同格式的数据-php教程

资源魔 24 0
HTTP协定中的POST 办法有多中格局的数据协定,正在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 这个没有是特地罕用,传输的数据正在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表单的数据,正在php中,应用$_POST['name']能够间接猎取, 不甚么特地的

Content-Type: multipart/form-data; 这类格局的数据,正在php中应用$_POST['name']能够猎取字符数据,应用$_FILES['file']能够猎取.

关于Raw这类格局的数据,应用以上两种方法不方法猎取到,需求应用此外手法.

1.应用file_get_contents("php://input")猎取;写一个简略php文件测试一下

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

用postman测试一下

e2203e71a3d7f30f79edfb4dadbc469.png

没成绩,能够接纳到

2.应用$GLOBALS['HTTP_RAW_POST_DATA']接纳

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

用postman测试一下

7a74ad01c49935041208b86b0eee531.png

卧槽,居然犯错了,提醒不发现HTTP_RAW_POST_DATA这个数组索引,甚么鬼.Google一番,正在php的官网看到了这样一段话

37e41c4fae17398a2a1d9140c0131f2.png

原来HTTP_RAW_POST_DATA这个正在php5.6中曾经被烧毁了,正在php7.0当前的版本中曾经被删除了了,我用的php版本为7.2,一定就犯错了

好吧,那就老诚实实的用file_get_contents("php://input")猎取吧

正在实际开发中,普通都是应用框架的,我用thinkphp用比拟多,正在tp5.0中能够应用Request的getInput()函数猎取Raw中的数据

<?php

namespace app\index\controller;

use think\Request;

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

测试一下

afa4b3a8a66c29a95d734b6bedd990f.png

不成绩,能够失常猎取

对于php猎取HTTP POST数据的办法先引见到这里,心愿对需求的冤家有所协助!

以上就是PHP猎取HTTP POST中没有同格局的数据的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学 HTTP POST

抱歉,评论功能暂时关闭!