• 技术文章 >后端开发 >php教程

    PHP获取HTTP POST中不同格式的数据

    藏色散人藏色散人2019-04-27 09:43:12转载1488
    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中文网其它相关文章!

    声明:本文转载于:aliyun,如有侵犯,请联系admin@php.cn删除
    专题推荐:PHP HTTP POST
    上一篇:PHP学习之外部调用类的私有属性 下一篇:谈谈PHP弱类型安全问题
    PHP编程就业班

    相关文章推荐

    • PHP 常用的魔术方法使用及作用汇总表• thinkphp如何轻松实现pdf的导出(利用tcpdf插件)• php基础学习之数组操作符• PHP学习之外部调用类的私有属性

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网