php cURL发布如何跟踪位置

php cURL发布如何跟踪位置,php,curl,Php,Curl,我在卷曲问题上有点墨守成规。post工作得很好,数据发布得很好,接收得很好,但是在执行cURL会话后,发布页面的url永远不会出现在浏览器中,例如,请查看以下代码: $ch = curl_init("http://localhost/eterniti/cart-step-1.php"); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_POST, true); curl_setop

我在卷曲问题上有点墨守成规。post工作得很好,数据发布得很好,接收得很好,但是在执行cURL会话后,发布页面的url永远不会出现在浏览器中,例如,请查看以下代码:

    $ch = curl_init("http://localhost/eterniti/cart-step-1.php");
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "error=1&em=$em&fname=$fname&lname=$lname&email1=$email1&email2=$email2&code=$code&area=$area&number=$num&mobile=$mobile&address1=$address1&address2=$address2&address3=$address3&suburb=$suburb&postcode=$postcode&country=$country");
    curl_exec($ch);
    curl_close($ch);
帖子工作正常,我被带到cart-step-1.php,在那里我可以处理发布的数据,但是浏览器URL地址栏中的位置仍然是脚本页面的位置,在本例中是proc_xxxxxx.php

有没有办法让URL地址反映我实际发布到的页面


谢谢大家,在这种情况下,你需要用html来完成,因此你的proc_xxxxxx.php会返回一个html页面,其中包含一个实际发送post数据的表单

您当前正在做的是检索服务器上的某个页面(带有参数),并将其作为浏览器请求的页面的数据返回。您的浏览器仍然认为它名为proc_xxxxxx.php,但它从服务器返回的html数据是来自cart-step-1.php请求的数据,但您的浏览器无法知道这一点


将浏览器栏中的url设置为任意内容是不可能的,因为这将带来巨大的安全风险(例如
window.url.display=)http://www.ebay.com/login“
):D

完成
curl
后,您可以使用以下内容重定向用户:

更完整:

$url = "http://localhost/eterniti/cart-step-1.php";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "error=1&em=$em&fname=$fname&lname=$lname&email1=$email1&email2=$email2&code=$code&area=$area&number=$num&mobile=$mobile&address1=$address1&address2=$address2&address3=$address3&suburb=$suburb&postcode=$postcode&country=$country");
curl_exec($ch);
curl_close($ch);

header('Location: ' . $url);
exit;
根据此站点对参数的期望,这可能有效,也可能无效。如果将浏览器重定向到此页面,它将只是来自浏览器的
GET
请求。您无法使浏览器发送
POST
数据


我唯一想到的是:
不要使用curl,而是在隐藏字段中创建一个包含所有值的窗体,并显示一个按钮,上面写着
Continue
。然后用户只需按下按钮。

您正在查找:

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
您可以使用获取上次重定向到的URL:

$url = curl_getinfo($ch , CURLINFO_EFFECTIVE_URL);

然后使用

将用户重定向到该页面,这是什么意思?您的代码完全在服务器端工作。你想重定向到生成的URL吗?我完全理解。目前,我正在显示cart-step-1.php中的内容,就像我在那里提交了一个表单一样。我是否仍然无法将已发布数据发送到该页面,就像他将表单发布到该页面一样?有一个cURL setopt参数,名为CURLOPT_FOLLOWLOCATION,我认为它应该跟随我们要卷曲到的url的位置,但事实似乎并非如此。如果我包括一个标题(“Location:cart-step-1.php”)它失败了,因为标题已经发送了。是的,这就是我所说的“你需要用html来做”的意思——你实际上想从浏览器将数据发布到cart-step-1.php——因此,要么遗漏proc_xxxxxx.php,要么proc_xxxxxx.php返回一个html页面,该页面是填写了所有参数并将操作设置为cart-step-1.php的表单(如有必要,您可以使用javascript自动提交表单)然后它将给出您想要的行为。为了澄清,我想将数据发布到cart-step-1.php,并将用户发送到那里。我在这里有意义吗?假设我将cURL替换为表单提交,我需要相同的行为,但我不能发布表单,因为它是我处理数据的脚本。本质上,我希望我的脚本发布数据将数据发送到cart-step-1.php,并且只有在数据未正确验证(即用户提交的数据不正确)的情况下才会发生这种情况data@webfac:因此,在将数据发送到“real”之前,您需要对其进行预处理网站对吗?正如我所说,你可以创建一个新表单,在隐藏字段中包含所有已处理的值。当然,这在任何方面都不安全,技术先进的用户仍然可以篡改此数据。正确,如果数据不完整,此处理脚本将返回数据以及错误代码。因此,是的,脚本会预处理数据,并且我想在最坏的情况下,我可以将参数附加到URL并使用GET方法发送,但它看起来很脏!
$url = curl_getinfo($ch , CURLINFO_EFFECTIVE_URL);