是否可以使用curl中的post方法返回数据

时间:2013-04-22 13:48:45

标签: php curl

我正在尝试用php学习curl。我知道可以使用curl使用post方法将值发送到另一个脚本。但是如果我想要那个,在第一次发送之后执行那些值并使用post方法再次返回....这是可能的。 这是我的两个脚本:

的index.php

<?php
$url = 'http://localhost/curl/test.php';

$post_data = array(
  'first' => '1',
  'second' => '2',
  'third' => '3'
  );

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

$output = curl_exec($ch);

curl_close($ch);

print_r($output);
?>

test.php

<?php
$a = $_POST['first'];
$b = $_POST['second'];

$c = $a+$b;
$d = $b-$a;
$e = $a*$b;

$output =  array(
  'choose' => $c,
  'choose1' => $d,
  'choose2' => $e
  );

print_r($output);
?>

这里index.php通过post方法发送,我可以用$ _POST ['first']访问它。如果我想要从这里传输$ output数组test.php并且可以从index.php中将它们作为$ _POST ['choose']访问,那可能吗?

2 个答案:

答案 0 :(得分:3)

来自curl的响应不会自动填充像$_POST这样的超级全局,因为这些是在脚本加载时设置的。

您需要自己解析卷曲响应。我建议你以PHP易于解析的格式返回它。例如,JSON使用json_decode()

实施例

分别用以下代码替换print_r()

<强> test.php的

echo json_encode($output);

<强>的index.php

$data = json_decode($output, true);
print_r($data);

答案 1 :(得分:1)

而不是print_r($ output);在test.php中创建一个处理数据的函数模块,并返回:

return $output;

index.php,$ output = curl_exec($ ch);是的,您最终可以通过以下方式访问数据:

echo $output->choose;
echo $output->choose1;

或使用上面提到的Jason parse_str()json_decode()