我正在开发一个表单,其中要求将收集的数据提交给第三方网站,格式为:http://www.domain.com/page?key=value&key2=value2
我决定使用cURL,因为我没有找到让我信服的替代品。
我正在运行的问题是,一旦提交表单,就会执行cURL,但我被重定向到我指定的域。相反,我想将用户重定向到我的域中的确认页面而不是第三方网站。
以下是我正在使用的代码示例:
$URL="otherserver.domain.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://$URL");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "key=value2&key2=value2&key3=value3");
curl_exec($ch);
$info = curl_getinfo($ch);
curl_close ($ch);
如何防止被重定向到otherserver.domain.com?
如果您认为有更好的方式将数据提交到第三方网站,请随时告诉我。
提前谢谢大家
答案 0 :(得分:5)
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
不会输出结果
和
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0);
会忽略重定向(因此当http://google.com/将您转移到https://google.us/时,这会忽略它)
答案 1 :(得分:5)
试试这个:
<?php
$url = "http://***..";
$ch = curl_init($url);
$opts = array(CURLOPT_RETURNTRANSFER => 1,
CURLOP_HEADER => 1,
CURLOPT_FOLLOWLOCATION => 0,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => "foo=ba");
curl_setopt_array($ch, $opts);
echo curl_exec($ch);
?>
答案 2 :(得分:0)
除了已接受的答案上提供的措施外,如果回显输出,还请确保转义输出。
例如,代替:
$lastResponse = curl_exec( $ch );
echo $lastResponse;
使用:
$lastResponse = curl_exec( $ch );
echo htmlentities($lastResponse ,ENT_QUOTES);
这解决了我的问题,因为我得到的响应上有一个JS重定向。
我知道这是一个古老的问题,但它是在线获得的第一个结果,因此希望这可以帮助某人,就像在经过几个小时的搜索后在论坛上找到它对我一样。 >