PHP 5.6.2
我有输入脚本curlTest.php
:
<?php
print_r(array($_GET, $_POST, file_get_contents('php://input')));
?>
并编写我运行的脚本:
<?php
$url = 'http://localhost/curlTest.php';
$data = 'test-data';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
?>
我有这样的输出:
Array
(
[0] => Array
(
)
[1] => Array
(
[test-data] =>
)
[2] => test-data
)
为什么php在_POST中解析我的输入数据?但是在PHP 5.2.6上的另一台机器上,我有另一个输出:
Array
(
[0] => Array
(
)
[1] => Array
(
)
[2] => test-data
)
有什么想法吗?
答案 0 :(得分:1)
您正在做:
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
设置POSTFIELDS
会自动告诉您正在进行POST。
发布/获取数据是关键:值对。您提供了($data
)PHP正在解析的没有值的密钥,因此您基本上已经获得$_POST['test-data'] = null
。 POST数据通过STDIN传递给脚本,这就是php://input
向您显示测试数据的原因。