PHP获取HTTP POST中不同格式的数据
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中不同格式的数据的详细内容,更多请关注其它相关文章!
上一篇: php访问url的两种方法示例(get和post代码)
下一篇: php读取文件的方法是什么
推荐阅读
-
php中用socket模拟http中post或者get提交数据的示例代码
-
PHP中对于浮点型的数据需要用不同的方法解决
-
php获取通过http协议post提交过来xml数据及解析xml
-
php获取数组中重复数据的两种方法
-
php从数据库中获取数据用ajax传送到前台的方法
-
php获取post中的json数据的实现方法
-
微信小程序授权 获取用户的openid和session_key【后端使用java语言编写】,我写的是get方式,目的是测试能否获取到微信服务器中的数据,后期我会写上post请求方式。
-
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
-
PHP中对于浮点型的数据需要用不同的方法解决
-
PHP获取数据库表中的数据插入新的表再原删除数据方法