2011-09-10 89 views
0

在我的系統中,用戶將數據輸入到表單中,並且它將由PHP腳本處理。使用特殊POST標題重定向

這個php腳本會操縱這些數據,然後需要將用戶重定向到一個https頁面,而且還要發送它自己的POST參數。

因此,舉例來說,如果

send-me.php?name=chuck+norris
被調用時,用戶應該被重定向到
https://secret.hideout.com/
其中一個POST參數
is_chuck="1" 
be_polite="definitely" 
run_away="what's the point?"

這可能嗎?怎麼樣?

感謝

+0

你控制'secret.hideout.com'或者是第3客戶端將不會有一個適當的navegation派對網站? –

+0

第三方恐怕 –

回答

4

如果您不控制目標站點,我可以看到的唯一方法是在PHP頁面上有第二個<form>,其中https:// URL爲目標,值爲隱藏字段。

但是,這樣,PHP腳本改變它們後,這些值仍然可以由用戶操作。

或者,根據您需要執行的操作的性質,請考慮在表單發佈之前使用JavaScript在客戶端處理值。

+0

這是我能想到的唯一方法,但我討厭它感覺如何:\ –

0

需要將用戶重定向到HTTPS頁面,而且還沿着自己的POST參數發送。

這是不可能的。 POST是一個請求標題,而不是響應。

因此,不要干涉用戶和任何服務。
總是有合法的方式來獲得交易結果。用它。

+0

我不控制https頁面,也不控制我需要用來訪問它的方法。 GET不受支持。 –

+0

所以,只是不要干預,讓用戶直接去服務 –

+0

你不會只是給我懷疑的好處,並認爲這將是不切實際的? 我有20個這樣的POST參數需要發送,其中一些需要從數據庫中收集,這是必須的,這些不會被用戶湮沒 –

2

您無法使用POST參數重定向到一個URL。

您可以重定向到具有GET參數的URL(追加到URL的末尾):

https://secret.hideout.com/?is_chuck=1&be_polite=definitely&run_away=now 

您可以使用curl調用與POST參數的URL,但你不能重定向到它。

+0

bleh。謝謝你的信息 –

1

我認爲最好的方法是創建一個表單並調用JavaScript提交。

在發送-me.php

你解析你所需要的數據後,將顯示這個網站:

<form name="send" action="https://secret.hideout.com/" method="post"> 
<input type="hidden" name="is_chuck" value="1" /> 
... 
</form> 
<script type="text/javascript"> 
document.forms.send.submit(); 
</script> 

然而,這有缺點:

  • https://secret.hideout.com/就會知道的Referer標頭你發送客戶端和從他的頁面。
  • 客戶端可以篡改發佈數據以瞭解發佈內容。
中就可以使後服務器端的其他方式

,但由於餅乾等

+0

是的。我認爲這是唯一的解決方案。 kludgy,但嘿...謝謝 –