cURL功能未发布到其他域


cURL Fuction not POSTing to other domain

所以我的一个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"];
?>

我得到一张空白页。我哪里错了?有没有其他方法可以在接收端获取结果?此外,当我尝试使用ideticalreceive.php时,我只得到一页空白。

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

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

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

PHP通常告诉你什么时候有这样的问题。但是,我假设您关闭了某些错误检查。

就好像您在使用curl_setopt($post, CURLOPT_RETURNTRANSFER, 1);一样。CURLOPT_RETURNTTRANSFER告诉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));