2010-05-03 209 views
0

因此,我試圖完成的是有一個自我發佈的PHP表單,POST到外部頁面(使用CURL),然後重定向到另一個頁面。目前,發生的事情是,一旦我點擊表單上的「提交」(在contact.php中),它就會自動發佈(因爲它是一種自我發佈形式)。然後腳本使用CURL準備POST並執行該帖子。外部頁面進行處理,然後,外部頁面應該重定向到另一個頁面,在引用域中。但是,發生什麼情況是,contact.php頁面似乎從外部頁面重定向到的頁面加載HTML,然後,在此頁面上加載contact.php的HTML。PHP表單POST到外部URL,重定向到另一個URL

效果,看起來像兩個單獨的頁面呈現爲一個頁面。當然,我只想執行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); 
} 
?> 

回答

0

好像你幾乎沒有。

顯示從cURL返回的內容後,您可能只想死()或退出(),以便您的POST前POST版本的contact.php不會發送到瀏覽器。

所以你可以停止執行,或者用條件結構化你的代碼,所以 「顯示錶單」的東西發生,或者「做一些捲曲的帖子並顯示結果」的東西發生,但不是兩者都發生。