栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

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

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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文件测试一下

用postman测试一下



没问题,可以接收到

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

用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中的数据

getInput();
    }
}

测试一下




作者:紫葡萄0
链接:https://www.jianshu.com/p/a8731a813078


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/227383.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号