2017-04-06 53 views
0

試圖創建代理,它應該像通過表單提交重定向到特定頁面一樣工作。 寫道:php curl - 如何獲得簡單的頁面重定向

<?php 
$postdata = filter_input_array(INPUT_POST); 
if(count($postdata) == 0) die(); 

$curl = curl_init(); 
$options = array(
    CURLOPT_URL => $postdata[ "processor" ], // Here is redirect URL 
    CURLOPT_POST => true, 
    CURLOPT_FOLLOWLOCATION => true, 
    CURLOPT_POSTFIELDS => $postdata 
); 
curl_setopt_array($curl, $options); 
curl_exec($curl); 
curl_close($curl); 
?> 

我在答覆中絕對正確的谷歌Chrome瀏覽器開發控制檯中看到的,但我沒有看到它正確的瀏覽器。 有什麼問題?

+0

如果你想重定向的頁面簡單的使用PHP的header()方法。 Curl允許你以編程方式訪問頁面,但如果你想簡單地使用'header(「Location:url」);'在php中重定向。如果你想獲得該頁面並顯示在你的PHP網站上,那麼你需要解析捲曲和顯示的結果。 – webDev

+0

需要將表單字段發佈(封裝到postdata數組)然後重定向到特定的URL - 與表單提交相同 –

+0

將'header(「Location:」。$ postdata [「processor」]);'在curl_init之前。這會產生錯誤: 警告:無法修改標頭信息 - 已經發送的標頭(輸出開始於... –

回答

0

重定向完成後,檢查捲曲狀態代碼爲200。

$postdata = filter_input_array(INPUT_POST); 
    if(count($postdata) == 0) die(); 

    $curl = curl_init(); 
    $options = array(
     CURLOPT_URL => $postdata[ "processor" ], // Here is redirect URL 
     CURLOPT_POST => true, 
     CURLOPT_FOLLOWLOCATION => true, 
     CURLOPT_POSTFIELDS => $postdata 
    ); 
    curl_setopt_array($curl, $options); 
    curl_exec($curl); 
    curl_close($curl); 
    header("Location:".$postdata[ "processor" ]); 

確保不輸出/頭之前打印();您可以從捲曲詳細驗證您的捲曲狀態代碼,然後重定向,如果200
瞭解如何使用狀態代碼獲取詳細捲曲Link
重定向例如:Link

+0

我知道 - 這個頁面將會工作 但是最後 - curl不能重定向頁面? curl可以做到這一點,但不清楚 - 怎麼做? –

+0

頭部必須在結束CURL操作完成後重定向頁面 – webDev

+0

S orry,最後一個帶有header()的代碼在最後沒有任何效果 –