帝国CMS模板大全
www.admin99.cn
www.92cms.cn 帝国CMS模板下载站!,情怀,养站,二次开发!源码需求比较大的一站式会员下载,价更省!!!

PHP获取HTTPPOST中不同格式的数据

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中不同格式的数据的详细内容,更多请关注Gxl网其它相关文章!

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《PHP获取HTTPPOST中不同格式的数据》
文章链接:https://www.admin99.cn/6560
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
QQ站长交流群:953950264

登录

找回密码

注册