cURL没有正确重定向

时间:2013-12-09 12:30:37

标签: php post redirect curl

我在这里已经阅读了很多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拉入其他页面的内容,而不是将用户重定向到它。

有什么建议吗?

2 个答案:

答案 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();