文档详情

PHP中为什么使用file.docx

发布:2025-05-22约2.56千字共4页下载文档
文本预览下载声明

PHP中为什么使用file

目录file_get_contents()php://input$http_raw_post_dataphp://input、$http_raw_post_data、$_POST、$_GET区别接收和发送XML的php示例php示例:接收XMLphp示例:发送xml微信用户和公众号产生交互的过程中,用户的某些操作会使得微信服务器通过事件推送的形式,通知到开发者在开发者中心处设置的服务器地址(回调url),从而开发者可以获取到该信息。PHP中为什么会使用file_get_contents(php://input)来接收呢?为什么有些场景file_get_contents(php://input)会接收不到呢?

php用file_get_contents(php://input)或者$HTTP_RAW_POST_DATA可以接收xml数据,

file_get_contents()

file_get_contents()函数把整个文件读入一个字符串中。

php://input

php://input是个可以访问请求的原始数据的只读流。POST请求的情况下,最好使用php://input来代替$HTTP_RAW_POST_DATA,因为它不依赖于特定的php.ini指令。而且,这样的情况下$HTTP_RAW_POST_DATA默认没有填充,比激活always_populate_raw_post_data潜在需要更少的内存。enctype=multipart/form-data的时候php://input是无效的。

php://input使用范围

1、读取POST数据

2、不能用于multipart/form-data类型

$http_raw_post_data

$http_raw_post_data是PHP内置的一个全局变量。它用于,PHP在无法识别的Content-Type的情况下,将POST过来的数据原样地填入变量$http_raw_post_data。它同样无法读取Content-Type为multipart/form-data的POST数据。需要设置php.ini中的always_populate_raw_post_data值为On,PHP才会总把POST数据填入变量$http_raw_post_data。

php://input、$http_raw_post_data、$_POST、$_GET区别

1、GET提交时,不会指定Content-Type和Content-Length,它表示http请求body中的数据是使用http的post方法提交的表单数据,并且进行了urlencode()处理。

2、POST提交时,Content-Type取值为application/x-www-form-urlencoded时,也指明了Content-Length的值,php会将http请求body相应数据会填入到数组$_POST,填入到$_POST数组中的数据是进行urldecode()解析的结果。

3、php://input数据,只要Content-Type不为multipart/form-data(该条件限制稍后会介绍)。那么php://input数据与httpentitybody部分数据是一致的。该部分相一致的数据的长度由Content-Length指定。

4、仅当Content-Type为application/x-www-form-urlencoded且提交方法是POST方法时,$_POST数据与php://input数据才是一致(打上引号,表示它们格式不一致,内容一致)的。其它情况,它们都不一致。

5、php://input读取不到$_GET数据。是因为$_GET数据作为query_path写在http请求头部(header)的PATH字段,而不是写在http请求的body部分。

接收和发送XML的php示例

php示例:接收XML

接收xml数据,并转化为array数组。

php

$xmlData=file_get_contents(php://input);

$obj=simplexml_load_string($xmlData,SimpleXMLElement,LIBXML_NOCDATA);

$json=json_decode(json_encode($obj),true);

php示例:发送xml

php

$xm

显示全部
相似文档