我目前有一个程序可以在服务器上运行测试,它会将结果发送到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);
}
?>
答案 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数据,以便将数据发送到服务器并检查来自服务器的所有请求。它非常适合调试,而且是免费的。