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 php开发教程 php开发资料 php开发自学 HTTP POST
抱歉,评论功能暂时关闭!