cURL功能不会发布到其他域

时间:2015-07-02 11:20:03

标签: php post curl cross-site

所以我的一个php文件中有一些变量,我想将这些变量数据发送到另一个域。所以我使用的是cURL函数。

<?php
function post_to_url($url, $data) {
$fields = '';
foreach($data as $key => $value) { 
  $fields .= $key . '=' . $value . '&'; 
}
rtrim($fields, '&');

$post = curl_init();

curl_setopt($post, CURLOPT_URL, $url);
curl_setopt($post, CURLOPT_POST, count($data));
curl_setopt($post, CURLOPT_POSTFIELDS, $fields);
curl_setopt($post, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($post);
echo $result;

curl_close($post);
}

$data = array(
   "name" => "c.bavota",
   "website" => "http://bavotasan.com",
   "twitterID" => "bavotasan"
);

post_to_url("http://anotherdomain.com/receive.php", $data);
//header("location: http://anotherdomain.com/receive.php");
?>

我的receive.php文件的内容是 -

<?php
echo $_POST["name"];
?>

我得到一个空白页面。 我哪里错了?还有另一种方法可以在接收端获取结果吗? 此外,当我尝试使用一个理想的receive.php时,我只得到空白页。

post_to_url("http://samedomain.com/receive.php", $data);

2 个答案:

答案 0 :(得分:0)

好像您正在使用curl_setopt($post, CURLOPT_RETURNTRANSFER, 1);。 CURLOPT_RETURNTRANSFER告诉PHP将响应存储在变量中,而不是打印它或重定向到页面。您无需重定向到页面以显示请求,您可以直接执行以下操作:

$result = curl_exec($post);
echo $result;//show result expected ==> "c.bavota"
  

Curl不会重定向到任何页面。但你可以同时看到回应。

由于您使用header("location: http://anotherdomain.com/receive.php");,您将收到空白页面意味着您再次点击GET页面请求。

而不是使用curl_setopt($post, CURLOPT_POSTFIELDS, $fields);尝试:

curl_setopt($post, CURLOPT_POSTFIELDS, http_build_query($data));

答案 1 :(得分:0)

您的$ url参数未被使用。您正在为URL使用未定义的变量:

curl_setopt($post, CURLOPT_URL, $url2); // Undefined $url2?

PHP通常会告诉您何时出现类似问题。但是我会假设您已关闭某些错误检查。