【问题标题】:cURL Fuction not POSTing to other domaincURL 函数未发布到其他域
【发布时间】:2015-07-02 11:20:03
【问题描述】:

所以我的一个 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);

【问题讨论】:

  • 添加了“PHP”标签。请永远不要忘记这样做。

标签: php post curl cross-site


【解决方案1】:

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

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

当出现此类问题时,PHP 通常会告诉您。但是我会假设您关闭了某些错误检查。

【讨论】:

  • 对不起。当我将代码复制到堆栈溢出时,就发生了这个缺陷。这不是我的原始代码的情况。我在问题中更正了。
  • 好的。我会尝试回显除 $_POST 变量之外的其他内容,以查看您是否真正到达了该文件。如果它有效,那么我猜可能是 name 参数没有正确发布,或者如果它仍然是空白,则在 receive.php 服务器上发生错误。
【解决方案2】:

就好像你在使用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));

【讨论】:

  • 我删除了标题并添加了 echo $result;现在我在浏览器中收到消息“307 临时重定向”
  • 是的,很抱歉。当我将代码复制到堆栈溢出时,就发生了这个缺陷。这不是我的原始代码的情况。我在问题中更正了。
猜你喜欢
  • 1970-01-01
  • 2016-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-28
  • 2016-04-14
  • 2018-07-05
  • 1970-01-01
相关资源
最近更新 更多