我正在尝试用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']访问,那可能吗?
答案 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()
。