我在这里已经阅读了很多cURL问题,但是我们似乎没有遇到过同样的问题。
我已设置表单以提交以下内容:
if(isset($_POST['submitted_form']) && $_POST['submitted_form'] == "yes"){
$ch = curl_init("https://www.pipelinedeals.com/web_lead");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_REFERER, "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."");
curl_setopt($ch, CURLOPT_POSTFIELDS, "developer_mode=".$_POST['developer_mode']."&thank_you_page=".$_POST['thank_you_page']."&w2lid=".$_POST['w2lid']."&assign_to_id=".$_POST['assign_to_id']."&lead[lead_source]=".$_POST['lead[lead_source]']."&lead[full_name]=".$_POST['lead[full_name]']."&lead[phone]=".$_POST['lead[phone]']."&lead[email]=".$_POST['lead[email]']."");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_exec($ch);
curl_close($ch);
}
在有人问我为什么使用这种复杂的方法发布数据之前,而不仅仅是提交表单,这是因为我想在将数据传递给PipelineDeals之前将其用于其他目的。
它非常接近正常工作我可以品尝它。我的问题是,当我在“http://exampledomain.com”上运行代码时,它会继续并完美地发布数据。问题是它没有正确执行重定向。
数据帖子会发生什么。 “http://exampledomain.com”留在地址栏中,“https://www.pipelinedeals.com/web_lead”的内容加载到页面上(并以表明收到帖子的方式加载),然后是内容“{{3 “在它下面加载。这就像cURL拉入其他页面的内容,而不是将用户重定向到它。
有什么建议吗?
答案 0 :(得分:1)
因为这正是卷曲所做的。它会抓取您的请求的输出,然后如果您愿意,可以使用它做一些奇特的事情,然后您使用该信息来渲染您自己的页面。
你不是在找:header(“Location:http://www.example.com/”); / *重定向浏览器* / http://php.net/manual/en/function.header.php
(当然可能与CURL一起)
答案 1 :(得分:1)
这就像cURL正在拉入另一页的内容 而不是将用户重定向到它。
cURL实际上不会将用户重定向到相关页面。客户端的浏览器完全忘记了cURL正在做的事情。就浏览器而言,它只是从您的服务器(正在执行POST请求)中接收这些数据。
要解决此问题,您可能需要设置隐藏的表单,然后通过JavaScript提交该表单。小例子:
<form id="pipeline" action="https://www.pipelinedeals.com/web_lead" method="post">
<input type="hidden" name="w2lid" value="<?php echo $_POST['w2lid']; ?>">
<!-- the rest of your POST vars -->
</form>
和JS:
document.getElementById('pipeline').submit();