旗下导航:搜·么
当前位置:网站首页 > PHP教程 > 正文

PHP猎取HTTP POST中差别花样的数据【php教程】

作者:搜搜PHP网发布时间:2019-12-01分类:PHP教程浏览:120


导读:HTTP协定中的POST要领有多中花样的数据协定,在HTTP的head顶用差别的Content-type标识.经常运用的有application/x-www-form-u...
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测试一下

没问题,能够吸收到

2.运用$GLOBALS['HTTP_RAW_POST_DATA']吸收

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

用postman测试一下

卧槽,居然出错了,提醒没有发明HTTP_RAW_POST_DATA这个数组索引,什么鬼.Google一番,在php的官网看到了如许一段话

本来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();
    }
}

测试一下

没有问题,能够一般猎取

关于php猎取HTTP POST数据的要领先引见到这里,愿望对须要的朋侪有所协助!

以上就是PHP猎取HTTP POST中差别花样的数据的细致内容,更多请关注ki4网别的相干文章!

标签:PHPHTTP POST