一、PHP获得POST数据信息的几类方式
方式1、最经常见的方式是:$_POST[ fieldname
表明:只有接受Content-Type: application/x-www-form-urlencoded递交的数据信息
表述:也便是表格POST回来的数据信息
方式2、file_get_contents( php://input
表明:
容许载入 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,包含二进制文档流还可以。
因此用方式二是最商业保险的方式
方式3、$GLOBALS[ HTTP_RAW_POST_DATA
表明:
一直造成 $HTTP_RAW_POST_DATA 自变量包括有初始的 POST 数据信息。
此自变量仅在遇到未鉴别 MIME 种类的数据信息时造成。
$HTTP_RAW_POST_DATA 针对 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 ]中
节选自:u/205403/blog/325595
已推送XML为例子:
方式1:(file_get_contents( php://input ))
$input = file_get_contents( php://input //接受POST数据信息$xml = simplexml_load_string($input); //获取POST数据信息为simplexml目标var_dump($xml);
方式2:($GLOBALS[ HTTP_RAW_POST_DATA ])
$input = $GLOBALS[ HTTP_RAW_POST_DATA libxml_disable_entity_loader(true);$xml = simplexml_load_string($input, SimpleXMLElement , LIBXML_NOCDATA);var_dump($xml);