为什么PHP将输入数据解析为_POST数组

时间:2014-11-17 16:36:03

标签: php post

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
)

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您正在做:

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

设置POSTFIELDS会自动告诉您正在进行POST。

发布/获取数据是关键:值对。您提供了($data)PHP正在解析的没有值的密钥,因此您基本上已经获得$_POST['test-data'] = null。 POST数据通过STDIN传递给脚本,这就是php://input向您显示测试数据的原因。