Форма PHP POST для внешнего URL с перенаправлением на другой URL - PullRequest
0 голосов
/ 03 мая 2010

Итак, я пытаюсь сделать так, чтобы у вас была самопубликуемая форма PHP, POST на внешнюю страницу (используя CURL), которая, в свою очередь, перенаправляет на другую страницу. В настоящее время происходит то, что как только я нажимаю «Отправить» в форме (в contact.php), он отправляет POST самому себе (так как это форма для самостоятельной публикации). Затем скрипт подготавливает POST с использованием CURL и выполняет публикацию. Внешняя страница выполняет свою обработку, а затем предполагается, что внешняя страница перенаправляет обратно на другую страницу в ссылающемся домене. Однако вместо этого происходит следующее: страница contact.php загружает HTML-код со страницы, на которую перенаправлена ​​внешняя страница, а затем HTML-код contact.php загружается на ту же страницу.

Эффект - это то, что выглядит как две отдельные страницы, представленные как одна страница. Естественно, я просто хочу выполнить 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 голосов
/ 03 мая 2010

Кажется, ты почти у цели.

Вы, вероятно, просто хотите умереть () или выйти () после отображения материала, возвращенного для cURL, чтобы ваша версия contact.php до POST не отправлялась в браузер.

Таким образом, вы можете просто остановить выполнение или структурировать ваш код с помощью условных выражений, чтобы либо Происходит «отображение формы» или «делать какие-то фигурные публикации и отображать результаты», но не то и другое одновременно.

...