PHP表单POST到外部URL,重定向到另一个URL

时间:2010-05-03 01:29:24

标签: php html url post external

所以,我想要完成的是有一个自我发布的PHP表单,POST到外部页面(使用CURL),后者又重定向到另一个页面。目前,正在发生的事情是,一旦我点击表单上的“提交”(在contact.php中),它将POST到自己(因为它是一个自我发布的表单)。然后脚本使用CURL准备POST并执行发布。外部页面进行处理,然后外部页面应该在引用域中重定向回另一个页面。但是,相反的是,似乎contact.php页面从外部页面重定向到的页面加载HTML,然后,在此之后加载contact.php的HTML。

效果,就像两个单独的页面呈现为一个页面。当然,我只是想执行POST并让浏览器呈现它应该重定向到外部页面指定的页面。

这是我到目前为止的代码:

<?php     
if(isset($_POST['submit']))
 {
  doCURLPost();
 }

 function doCURLPost()
 { 
  $emailid = "2, 4";

  $hotel = $_POST['hotel'];


  //you will need to setup an array of fields to post with
  //then create the post string

  $data = array ( "recipient" => $emailid,
      "subject" => "Hotel Contact Form",
      "redirect" => "http://www.localhost.com/thanx.htm",
      "Will be staying in hotel: " => $_POST['hotel'],
      "Name" => $_POST['Name'],
      "Phone" => $_POST['Phone'],
      "Comments" => $_POST['Comments']);

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, "http://www.externallink.com/external.aspx");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  curl_setopt($ch, CURLOPT_POST, true);  
  curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array("Referer: http://www.localhost.com/contact.php"));
  $output = curl_exec($ch);
  $info = curl_getinfo($ch);
  curl_close($ch);
 }
?>

1 个答案:

答案 0 :(得分:0)

好像你差不多就在那里。

在显示从cURL返回的内容后,您可能只想死()或退出(),这样您的POST前版本的contact.php就不会被发送到浏览器。

所以你可以暂停执行,或者用条件构造你的代码,这样就可以了 “显示一个表单”的事情发生了,或者“做一些卷曲的帖子并显示结果”的事情发生了,但不是两者都有。