这篇文章主要介绍PHP如何获取HTTP POST中不同格式的数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
HTTP协议中后的方法有多中格式的数据协议,在HTTP的头中用不同的内容类型标识。常用的有
<代码>应用程序/x-www-form-urlencoded> 代码,这是最常见的,就从表是单的格式。在HTTP的头中是<代码>内容类型:应用程序/x-www-form-urlencoded。代码>
<代码>多部分/格式> 代码,这个是用来上传文件的,在HTTP的头中是<代码>内容类型:多部分/格式;边界=猈ebKitFormBoundary7MA4YWxkTrZu0gW 代码>
生这个不是特别常用,传输的数据在HTTP的身体中只有一段,不是以键值对的形式存放。在HTTP的头中是<代码> - type: application/json代码>,<代码>内容类型:文本代码>,<代码> - type: application/xml 代码>,<代码>的content - type: text/xml> 代码,等等形式
对于<代码>内容类型:应用程序/x-www-form-urlencoded 代码>这种形式表单的数据,在php中,使用<代码> $ _POST[& # 39;名字# 39;]> 代码可以直接获取,没有什么特别的
<代码>内容类型:多部分/格式;代码>这种格式的数据,在php中使用<代码> $ _POST[& # 39;名字# 39;]> 代码可以获取字符数据,使用<代码>带有_file美元[& # 39;文件# 39;]> 代码可以获取。
对于生这种格式的数据,使用以上两种办法没有办法获取到,需要使用别的手段。
1。使用<代码> file_get_contents (“php://input") 代码>获取;写一个简单php文件测试一下
& lt; php ? $测试=file_get_contents (“php://input"); echo $测试;
用邮差测试一下
没问题,可以接收到
2。使用<代码>全局美元[& # 39;HTTP_RAW_POST_DATA& # 39;] 代码>接收
& lt; PHP ? $=$全局测试[& # 39;HTTP_RAW_POST_DATA& # 39;]; echo $测试;
用邮差测试一下
卧槽,竟然出错了,提示没有发现<代码> HTTP_RAW_POST_DATA 代码>这个数组索引,什么鬼。谷歌一番,在php的官网看到了这样一段话
原来<代码> HTTP_RAW_POST_DATA 代码>这个在php5.6中已经被废弃了,在php7.0以后的版本中已经被删除了,我用的php版本为7.2,肯定就出错了
好吧,那就老老实实的用<代码> file_get_contents (“php://input") 代码>获取吧
在实际开发中,一般都是使用框架的,我用thinkphp用比较多,在tp5.0中可以使用演示了getInput()请求的函数获生中取的数据
& lt; php ? 名称空间的应用程序\指数\控制器; 使用认为\请求; 类指数 { 公共函数指数(请求美元请求) { 演示了getInput();回声请求→美元 } }
测试一下
以上是PHP如何获取HTTP POST中不同格式的数据的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!