方法1、最常见的方法是:$_POST['fieldname'];
说明:只能接收Content-Type:
application/x-www-form-urlencoded提交的数据
解释:也就是表单POST过来的数据
说明:
允许读取
POST
的
原始数据
.
和
$HTTP_RAW_POST_DATA
比起来,它给内存带来的压力较小,并且不需要任何特殊的
php.ini
设置.
php://input
不能用于
enctype="multipart/form-data".
解释:
对于未指定
Content-Type
的POST数据,则可以使用file_get_contents("php://input");来获取原始数据.
事实上,用PHP接收POST的任何数据都可以使用本方法.而不用考虑Content-Type,包括
二进制文件
流也可以.
所以用方法二是最保险的方法
总是产生
变量包含有原始的
数据.
此变量仅在碰到未识别
MIME
类型的数据时产生.
对于
enctype="multipart/form-data"
表单数据不可用
如果post过来的数据不是PHP能够识别的,可以用
$GLOBALS['HTTP_RAW_POST_DATA']来接收,
比如
text/xml
或者
soap
等等
$GLOBALS['HTTP_RAW_POST_DATA']存放的是POST过来的原始数据.
$_POST或
$_REQUEST
存放的是
PHP以key=value的形式格式化以后的数据.
但$GLOBALS['HTTP_RAW_POST_DATA']中是否保存POST过来的数据取决于centent-Type的设置,即POST数据时
必须显式示指明Content-Type:
application/x-www-form-urlencoded,POST的数据才会存放到
$GLOBALS['HTTP_RAW_POST_DATA']中
PHP接收JSON格式的数据
在API服务中,目前流行采用json形式来交互.
给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据.
接收前端提交的json数据稍微复杂一点,原因是:PHP默认识别的数据类型是application/x-标准的数据类型.所以呢,对型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之类的内容无法解析,如果用$_POST数组来接收就会失败!
此时可以使用$GLOBALS['HTTP_RAW_POST_DATA'] 或 file_get_contents('php://input') 来获取提交的数据
查看手册,可以发现$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST的区别:
$_POST:通过 HTTP POST 方法传递的变量组成的数组,是自动全局变量.
$GLOBALS['HTTP_RAW_POST_DATA'] :总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据.此变量仅在碰到未识别 MIME 类型的数据时产生.$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用.也就是说基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的.但是如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,比如 text/xml 或者 soap 等等.
把它当xml 用simplexml解析
php
$soap=SOAP
soap:Envelope xmlns:soap="" xmlns:xsi="" xmlns:xsd=""
soap:Body
QueryResponse xmlns=""
QueryResult
/QueryResult
/QueryResponse
/soap:Body
/soap:Envelope
SOAP;
$xml=simplexml_load_string($soap);
$result = $xml-children('')
-children('')
-QueryResponse
-QueryResult;
echo $result;
//链接
$http='';
//参数,很重要,之前搞的时候一直传不了参数过去,原来是这样的,搞死我了
$params=array('string'='xxx','string1'='xxxx');
//请求返回的数据
$return = $client-$fun($params);//parameters
实际上,soap基本都是通过http传递的.?
nusoap使用curl来post或者get信息到web?services,而soap_server和普通的程序类似,接受get或者post信息,但是经过了解析之后,呈现给你的就是规定的信息.?
ajax也是类似的道理啊.
form表单demo:task.html
fieldset id="setFiled"
legend发布任务/legend
form action="registr.php" method="post" id="steForm"
label任务类型:/labelbr
input type="text" name="type"? id="taskType" placeholder="请选择任务类型"/br
input type="text" name="type"? id="taskType" placeholder="请选择任务类型"/br
input type="text" name="type"? id="taskType" placeholder="请选择任务类型"/br
label酬nbsp;nbsp;金:/labelbr
input type="number" name="money" id="forMoney" min="1" max="1000"/label元/labelbr
label截止时间:/labelbr
input type="datetime" name="time" id="timeSubmit"/span data-year="" data-month="" data-date="" id="showDate"/spanbr
label详细描述:/labelbr
/form
扩展资料
php接收POST数据的三种方式
①.、$_POST 方式接受数据
$_POST 方式是由通过HTTP的POST方法传递过来的数据组成的数组,是一个自动全局变量.
注:只能接收Content-Type:application/x-www-form-urlencode提交的数据.也就是只能接收表单过来的数据.
如果访问原始POST数据不是php能够识别的文档类型,比如:text/xml 或者soap等等,可以用$GLOBLES['HTTP_RAW_POST_DATA']来接收,$HTTP_RAW_POST_DATA变量包含有原始POST数据.此变量仅在碰到未识别的MIME数据时产生.
注:$HTTP_RAW_POST_DATA对于enctype="multipart/form-data"表单数据不可用,也就是说使用$HTTP_RAW_POST_DATA无法接受网页表单post过来的数据.
如果访问原始POST数据,更好的方法是使用file_get_content("php://input");对于未指定Content-Type的POST数据,可以使用该方法读取POST原始数据,包括二进制流也可以和$HTTP_RAW_POST_DATA比起来.它带来的生存眼里更小,并且不需要任何特殊的php.ini设置.
注:php://input不能用于 enctype="multipart/form-data"
例如:$postStr = file_get_contents("php://input"); //获取POST数据
以上就是土嘎嘎小编为大家整理的phpsoap接收数据相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!