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文件测试一下
<?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数据的方法先介绍到这里
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Centos-redis安装与分片设置
win系统 1、进入到redis的目录下面 D:\360安全浏览器下载\redis-2.4.5-win32-win64\64bit 2、输入以下命令: redis-server.exe redis.conf 3、然后再打开一个dos命令栏,进入到redis的目录下,输入以下命令测试: redis-cli.exe -h 127.0.0.1 -p 6379 Linux系统 解压 tar -zxvf redis-3.0.2.tar.gz 编译 cd /usr/nacp/redis-3.0.2 make make install 错误解决 cc: Command not found 异常原因:没有安装gcc 解决方案:rpm -ivh gcc-c++-4.4.7-16.el6.x86_64.rpm error: jemalloc/jemalloc.h: No such file or directory 解决方案:make distclean。清理一下,然后再make。 couldn't execute "tclsh8.5": no such file or directory 异常原因:没有...
- 下一篇
Numpy常用属性及方法
Numpy 一、属性: ndarray.shape 返回一个元组,里面是各个维度的size ndarray.ndim 返回数组的维度 ndarray.dtype 返回数组数据的类型 二、方法: np.array(x, dtype=complex) 接收一个数组, dtype指定数据类型, np.zeros( (3,4) ) 接收一个代表数组维度size的元组 np.ones((3,4)) 同上 np.arange(10, 30, 5) 返回一个起始为10,每次增加5,一直到30但不包括30的数组(本例返回[10, 15, 20, 25]),一般会跟reshape配合使用。 np.linspace( 0, 2, 9 ) 将0-2分为九份 numpy.random.rand(d0, d1, ..., dn) Create an array of the given shape and populate it with random samples from a uniform distribution(均匀分布) over [0, 1). numpy.random.randn(d0, d1...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7安装Docker,走上虚拟化容器引擎之路