简单认识php://input、$_POST、$GLOBALS[‘HTTP_RAW_POST_DATA’]三者的区别

简单认识php://input、$_POST、$GLOBALS['HTTP_RAW_POST_DATA']三者的区别

    • php://input
    • $_POST
    • $GLOBALS['HTTP_RAW_POST_DATA']
    • 多种方案

php://input

  1. 从使用结果看,php://input与$GLOBALS[‘HTTP_RAW_POST_DATA’]的功能是一样的,但是,php://input需要的内存比较小,并且它不受 php.ini 配置文件的限制。
  1. 如果Coentent-Type的类型为multipart/form-data,使用php://input和$GLOBALS[‘HTTP_RAW_POST_DATA’]是获取不到数据的,除此之外,php://input都能获取到数据。
  1. 仅当Coentent-Type的类型为application/x-www.form-urlencoded时,使用php://input和$_POST获取到的数据才是一致的。
  1. 使用方式:使用file_get_contents(‘php://input’)获取请求数据。

$_POST

只有Coentent-Type的值为application/x-www.form-urlencoded和multipart/form-data两种类型时,$_POST才能获取到数据

$GLOBALS[‘HTTP_RAW_POST_DATA’]

如果php无法识别Coentent-Type类型,也就无法获取请求数据,这个时候,可以用$GLOBALS[‘HTTP_RAW_POST_DATA’]来获取

多种方案

$xml = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents("php://input");

你可能感兴趣的:(Php,Nginx,微信-小程序)