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