稍微背景: 我在公共網站上有一個表單,需要將數據發佈到防火牆後面的apache服務器。我不想直接從互聯網上訪問這個虛擬主機。重定向HTTP表單post
目前這是我在做什麼:我在我的DMZ中有一個IIS服務器,這個IIS服務器是允許通過防火牆訪問Apache服務器的唯一IP。作爲一個臨時解決方案,我使用「應用程序請求路由」來設置IIS,以通過IIS向Internet呈現Apache框。
* 我想要做的事情: *有一些方法可以捕獲然後中繼表單,而不必將Apache盒子呈現給互聯網。這裏的訣竅是POST將來自Internet上的任何地方,被IIS服務器抓取,然後從IIS服務器轉發到apache盒子。我看着與PHP /捲曲這樣做,但我不知道,如果 使用像這樣的事情會做的伎倆:
<?php
$todo = "";
while (list($name, $value) = each($HTTP_POST_VARS)) {
$todo.=$name."=".$value."&";
}
$ch = curl_init('http://mylanserver/capture.php');
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $todo);
curl_exec ($ch);
curl_close ($ch);
?>
有人能指出我在正確的方向?謝謝。
你在正確的軌道上。我會這樣做:1.獲取原始請求2.轉發到IIS服務器。試試這些問題:http://stackoverflow.com/questions/1361673/get-raw-post-data http://stackoverflow.com/questions/869927/php-difference-between-curl-and-httprequest – Brian
是的你有正確的想法。 'CURLOPT_POSTFIELDS'可以直接使用'$ _POST'數組,你不需要構造鍵值字符串。你也許想要檢查結果,然後向公衆用戶顯示結果的一些解釋?如果你設置了'CURLOPT_RETURNTRANSFER','curl_exec()'返回響應。 – MrCode
好吧,上面的代碼大部分工作正常。我有我的表單中的字段,如「姓名,電話,電子郵件,郵編」這些正在正確傳遞。基本上沒有多重價值的東西。我有一些額外的字段與貨幣值等。當這些通過我的後端程序填充「數組」字段我需要爲每個這些字段定義數組?不知道在這裏做什麼,我的專長是Cut&Paste。 – jqapi