Heim > Backend-Entwicklung > PHP-Tutorial > php 获取 POST JSON 数据

php 获取 POST JSON 数据

WBOY
Freigeben: 2016-06-23 14:28:52
Original
897 Leute haben es durchsucht

简介:这是php 获取 POST JSON 数据的详细页面,介绍了和php,php, post, json php 获取 POST JSON 数据有关的知识、技巧、经验,和一些php源码等。

class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=359497' scrolling='no'>

在通过ajax向php程序中传递数据时,会发现使用$_POST根本无法获取数据.但是在firebug中可以看到post中其实是有json数据的.

在使用 print_r(file_get_contents("php://input")) 之后,却可以得到json数据

那什么是php://input呢?

对php://input的介绍,PHP官方手册文档有一段话对它进行了很明确地概述。

   “php://input allows you to read raw POST data. It is a less memory intensive alternative to $HTTP_RAW_POST_DATA and does not need any special php.ini directives. php://input is not available with enctype=”multipart/form-data”.

  翻译过来,是这样:

   “php://input可以读取没有处理过的POST数据。相较于$HTTP_RAW_POST_DATA而言,它给内存带来的压力较小,并且不需要 特殊的php.ini设置。php://input不能用于enctype=multipart/form-data”。

  1,Content-Type 取值为application/x-www-form-urlencoded时,php会将http请求body相应数据会填入到数组$_POST,填入 到$_POST数组中的数据是进行urldecode()解析的结果。(其实,除了该Content-Type,还有multipart/form- data表示数据是表单数据,稍后我们介绍)

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

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

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

  相信大家对 php://input已经有一定深度地了解了。那么$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。

  学习笔记1,Coentent-Type仅在取值为application/x-www-data-urlencoded和multipart/form-data两种情况下,PHP才会将http请求数据包中相应的数据填入全局变量$_POST

  2,PHP不能识别的Content-Type类型的时候,会将http请求包中相应的数据填入变量$HTTP_RAW_POST_DATA

  3, 只有Coentent-Type不为multipart/form-data的时候,PHP不会将http请求数据包中的相应数据填入php://input,否则其它情况都会。填入的长度,由Coentent-Length指定。

  4,只有Content-Type为application/x-www-data-urlencoded时,php://input数据才跟$_POST数据相一致。

  5,php://input数据总是跟$HTTP_RAW_POST_DATA相同,但是php://input比$HTTP_RAW_POST_DATA更凑效,且不需要特殊设置php.ini

  6,PHP会将PATH字段的query_path部分,填入全局变量$_GET。通常情况下,GET方法提交的http请求,body为空。

爱J2EE关注Java迈克尔杰克逊视频站JSON在线工具

http://biancheng.dnbcw.info/php/359497.html pageNo:1
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage