将POST JSON数据重定向到另一个要显示的页面

时间:2017-10-03 00:06:48

标签: php redirect post

我目前有一个程序可以在服务器上运行测试,它会将结果发送到test.php文件。我正在尝试将我的POST数据重定向到reports.php页面,这些数据是JSON格式的,我想在reports.php中很好地(最终)显示页面上的数据。现在我只想在report.php上回应POST的结果,这样我就可以排除故障并即兴创作我的代码。我怎样才能做到这一点?目前,当我打开report.php时,我得到一个空白页面。这就是我在test.php文件中的内容。

test.php

#!/usr/bin/php
<?php
// turn on error reporting
error_reporting(E_ALL);
ini_set('display_errors', 'On');

//URL to POST JSON data to
$url = "http://my/dir/to/reports.php";

$post_data = array(
  'id' => $argv[1],
  'version' => $argv[2],
  'server' => $argv[3],
  'status' => $argv[4],
  'test' => $argv[5],
  'time' => $argv[6],
  'body' => $argv[7],
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$result = curl_exec($ch);

if (curl_error($ch)) {
    echo 'Curl error: ' . curl_error($ch);
} else {
    echo "success: \n\n";
    print_r($result);
}
curl_close($ch);
?>

reports.php

<?php  //reports.php
//This php file is to receive the POST data coming from php files.
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
    $token = $_POST['result'];
    echo print_r($token);
}
?>

1 个答案:

答案 0 :(得分:2)

首先观察。在results.php中,您有以下内容:

echo print_r($token);

你回音,或者你print_r(),你不做两件事。 Echo将输出一个字符串,print_r()将输出一个字符串或一个人类可读的对象或数组版本。 print_r()可以很好地进行测试,但是你的最终代码应该回显你要打印到页面的任何输出。

无论如何,至于你的问题......

您的两个php文件之间的变量名称似乎有些混淆,即$result

以下是来自test.php的POST数据,此数组中的键将成为$ _POST数组中的键,该数组将发布到reports.php:

$post_data = array(
  'id' => $argv[1],
  'version' => $argv[2],
  'server' => $argv[3],
  'status' => $argv[4],
  'test' => $argv[5],
  'time' => $argv[6],
  'body' => $argv[7],
);

因此{.1}}等将在reports.php中设置

现在这里是results.php的代码:

$_POST['id'], $_POST['version']

您正在引用if ($_SERVER['REQUEST_METHOD'] == 'POST'){ $token = $_POST['result']; echo print_r($token); } ,但结果不是您要发布的数组键之一,因此不会设置它并且您的输出将为空。您已将$_POST['result']定义为test.php中的变量,该变量将包含来自reports.php的响应,但在reports.php中,它是未定义的。

如果您希望所有内容返回到reports.php的响应中,则不需要为$result指定数组键,只需返回整个数组。

$_POST

或者如果你想要它作为JSON:

if ($_SERVER['REQUEST_METHOD'] == 'POST'){
    print_r($_POST);
} 

最后,参考这个:

  

目前,当我打开report.php时,我得到一个空白的白页

如果您在浏览器中打开它,那么它将是空白的,因为您正在发出GET请求,而不是POST请求。如果您向其发送数据,它只会返回内容。

说完这一切后,我觉得你正试图通过这种方法重新发明轮子。我的建议是查看RequestBin,您可以在其中创建一个POST数据,以便将数据发送到服务器并检查来自服务器的所有请求。它非常适合调试,而且是免费的。