Heim > Backend-Entwicklung > PHP-Tutorial > 借助curl理解$GLOBALS['HTTP_RAW_POST_DATA'] ,$_POST, php://input

借助curl理解$GLOBALS['HTTP_RAW_POST_DATA'] ,$_POST, php://input

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-23 13:04:19
Original
1019 Leute haben es durchsucht

发送请求代码

post.php

<?php$url='http://localhost/web/curl/url.php';$data='a=123|b=2&c=3';$header=array();//$header[]="content-type:text/xml";$ch=curl_init($url);curl_setopt($ch,CURLOPT_POST,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$data);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_HTTPHEADER,$header);$con=curl_exec($ch);curl_close($ch);print_r($con);
Nach dem Login kopieren

接收请求的代码

url.php

<?phpecho "<h3>HTTP_RAW_POST_DATA:</h3>";print_r($GLOBALS["HTTP_RAW_POST_DATA"]);echo "<hr><h3>post:</h3>";print_r($_POST);echo "<hr> <h3>input:</h3>";print_r(file_get_contents("php://input"));echo "<hr>";echo "CONTENT_TYPE:".($_SERVER['CONTENT_TYPE']);
Nach dem Login kopieren

post.php执行结果

HTTP_RAW_POST_DATA:

post:

Array ( [a] => 123|b=2 [c] => 3 )

input:

a=123|b=2&c=3

CONTENT_TYPE:application/x-www-form-urlencoded

1.说明当没传content-type时 php默认是application/x-www-form-urlencoded ,此时php可识别 ,$GLOBALS["HTTP_RAW_POST_DATA"] 为空,post即为识别后生成的数组,php://input 获取原始数据

如果穿的数据时123456 $_POST里因为没key也是无数据的,php://input里还是原始数据

 

2.如果设置$header[]="content-type:text/xml";

执行结果是

HTTP_RAW_POST_DATA:

a=123|b=2&c=3

post:

Array ( )

input:

a=123|b=2&c=3

CONTENT_TYPE:text/xml

此时Post里是没数据的,HTTP_RAW_POST_DATA 里有数据

php://input 里始终是原始数据

综上所诉:

当content-type为默认的 application/x-www-form-urlencoded 时php可处理Post过来的数据并组合生成$_POST数组 $GLOBALS["HTTP_RAW_POST_DATA"] 里此时无值

当content-type为其它类型时php不能处理,生成不了$_POST数组,$GLOBALS["HTTP_RAW_POST_DATA"]里和php://input里都是原始数据

php://input在任何情况下均是最原始post来的数据

 

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