我对cURL问题有点不满。帖子工作很好,数据发布得很好并且收到正常,但是在执行cURL会话后,发布页面的网址永远不会出现在浏览器中,例如查看以下代码:
$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地址以反映我实际发布到的页面?
感谢工厂
答案 0 :(得分:1)
您正在寻找:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
答案 1 :(得分:1)
您可以使用curl_getinfo获取重定向到的最后一个网址:
$url = curl_getinfo($ch , CURLINFO_EFFECTIVE_URL);
然后使用header
将用户重定向到该页面答案 2 :(得分:0)
在这种情况下你需要在html中执行 - 所以你的proc_xxxxxx.php会返回一个html页面,该页面是一个实际发送帖子数据的表单。
您目前正在做的是检索服务器上的某个页面(带参数),并将其作为浏览器请求的页面的数据返回。你的浏览器仍然认为它叫proc_xxxxxx.php,但它从服务器返回的html数据来自cart-step-1.php请求,但你的浏览器无法知道这一点。
将浏览器栏中的网址设置为任意内容是不可能的,因为这会带来巨大的安全风险(例如window.url.display = 'http://www.ebay.com/login'
):D
答案 3 :(得分:0)
完成curl
内容后,您可以使用header()
重定向用户:
header('Location: http://localhost/eterniti/cart-step-1.php');
更完整:
$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
数据。
只有我想到的事情(如果你想让浏览器发送POST
数据)是:
而不是使用curl,创建一个包含隐藏字段中所有值的表单,并显示一个显示Continue
的按钮。然后用户只需按下按钮。