PHP获取HTTPPOST中不同格式的数据
内容导读
收集整理的这篇技术教程文章主要介绍了PHP获取HTTPPOST中不同格式的数据,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1836字,纯文字阅读大概需要3分钟。
内容图文
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中的数据
<?phpnamespace appindexcontroller;use thinkRequest;class Index{ public function index(Request $request) { echo $request->getInput(); }}
测试一下
没有问题,可以正常获取
关于php获取HTTP POST数据的方法先介绍到这里,希望对需要的朋友有所帮助!
以上就是PHP获取HTTP POST中不同格式的数据的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是为您收集整理的PHP获取HTTPPOST中不同格式的数据全部内容,希望文章能够帮你解决PHP获取HTTPPOST中不同格式的数据所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。