为什么我在使用CURL时会看到POST数据,但是当我在Web浏览器中打开.php页面时却看不到?

时间:2017-11-15 17:46:05

标签: php json curl post

当我输入以下命令时,我在CLI中从POST获得结果,但是当我打开http://172.16.16.126:8089/Test.php时,我没有看到任何这些POST数据只是其他数据。

我知道我错过了什么吗?有人可以告诉我我做错了吗?

pi@raspberrypi:~ $ curl -X POST -H 'Content-Type: application/json' -d '{"username":"saad","password":"something","Hello":"Hey"}' http://172.16.16.126:8089/Test.php

stdClass Object
(
    [username] => saad
    [password] => something
    [Hello] => Hey
)
<pre>
stdClass Object
(
    [name] => John
    [age] => 42
)
Name: John Age: 42

JSON data: {"name":"John","age":42}

stdClass Object
(
    [name] => John
    [age] => 42
)
Array
(
    [name] => John
    [age] => 42
)
Name: John Age: 42
Test.php
<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
  $data = json_decode(file_get_contents("php://input"));
  print_r($data);
}

echo "<pre>\n";

$data = (object) array(
    'name' => 'John',
    'age' => 42
);

print_r($data);

printf("Name: %s Age: %s\n\n", $data->name, $data->age);

$data = json_encode($data);

echo "JSON data: $data\n\n";

$data = json_decode($data);

print_r($data);

$data = (array) $data; // cast (convert) the object to an array

print_r($data);

printf("Name: %s Age: %s\n\n", $data['name'], $data['age']);

?>

1 个答案:

答案 0 :(得分:0)

每次请求PHP程序处理的URL时,都会运行PHP程序。

该程序查看请求的输入,然后根据它生成响应。

如果您使用包含JSON正文的cURL发出一个请求,然后从浏览器发出另一个请求但没有,那么您将为每个请求获得不同的响应。

可以编写你的PHP程序,这样当它获得一个带有JSON主体的POST请求时,它会将数据保存在某个地方(例如在数据库中),然后在它获得GET请求时(这可能是某人在浏览器的地址栏中键入URL以获取该数据而不是读取POST主体的结果。

这会给你看起来期待的结果。