2012-07-24 75 views
0

我想在PHP中採取一些變量,並將用戶重定向到第三方網站,並將變量作爲post vars發送。我知道這可能會更容易與cookie,但第三方已經成立,以處理帖子。有沒有人有任何建議如何做到這一點?PHP Post vars第三方

回答

2

您可以使用一些技巧。一個是遍歷POST變量並添加到表單,然後使用Javascript onLoad重新提交表單。

<html> 
    <body onload="document.forms[0].submit()"> 
     <form action="new-location.php" method="post"> 
      <?php foreach($_POST as $key => $val): ?> 
       <input type="hidden" name="<?php echo htmlSpecialChars($key, ENT_COMPAT, 'UTF-8') ?>" value="<?php echo htmlSpecialChars($val, ENT_COMPAT, 'UTF-8') ?>"> 
      <?php endforeach; ?> 
     </form> 
    </body> 
</html> 

另一種選擇是使用PHP和捲曲以及將數據發送到遠程站點:

url_setopt($ch, CURLOPT_POSTFIELDS, $_POST); 

http://www.php.net/manual/en/function.curl-setopt.php

+0

加載方式的表單工作完美,適合我正在做的事情。感謝大家的幫助。 – 2012-07-24 20:01:04

+0

很高興能得到幫助,並認爲其中的一個可以解決問題。祝你的項目好運。 – 2012-07-24 20:17:44

0

需要從用戶瀏覽器發送帖子。一個常見的方法是使用一箇中間頁面,該頁面包含一個隱藏輸入元素的表單,該元素包含要發佈的變量,然後使用Javascript自動提交加載的表單。

1

在PHP頁面,使用cURL開放給第三方網站的連接,並使用此功能:

curl_setopt($Curl, CURLOPT_POST, 1); 
curl_setopt($Curl, CURLOPT_POSTFIELDS, 'field1=allo&field2=fsdfsd'); 

的第三方將收到也是一個真正的POST請求的請求。您也可以閱讀第三方網站的答案。

+0

這不是重定向。您可以使用curl將POST值發佈到第三方站點,但您也將通過PHP腳本接收html,該腳本必須回傳給用戶。除非你對所收到的html進行一些操作,否則像CSS/Javascript包含的東西,圖像和鏈接將無法正常工作。 – AndrewR 2012-07-24 19:28:33

+0

@AndrewR OP只想用POST值重定向用戶。這些線做到了。另外,如果你不想讀取輸出,只需使用'curl_setopt($ Curl,CURLOPT_RETURNTRANSFER,0); '。我不明白你的觀點先生。 – 2012-07-24 19:30:58

+1

我明白了「將用戶重定向到第三方站點,並將變量作爲後變量發送」,將用戶瀏覽器重定向到第三方站點(離開他的站點),並將數據一起傳送到HTTP POST中。也許我解釋不正確。 – AndrewR 2012-07-24 19:35:02

0

沒有足夠的信息,但也許你可以把它使用窗體的JavaScript(jQuery)幫助

<script> 
$(function(){ 
    $('#form').submit(); 
}); 
</script> 
<form action="external.url/page.php" action="post" id="form"> 
<input type="hidden" name="variable" value="value" /> 
</form>