8

少し背景:ファイアウォールの背後にあるApacheサーバーにデータを投稿する必要がある公開Webサイトにフォームがあります。インターネットからこのウェブホストへの直接アクセスを提供したくありません。

現在、これが私が行っていることです。DMZにIISサーバーがあります。このIISサーバーは、ファイアウォールを介してApacheサーバーにアクセスできる唯一のIPです。一時的な解決策として、IISを介してインターネットにApacheボックスを提示するために、「ApplicationRequestRouting」を使用してIISをセットアップしました。

私がしたいこと: Apacheボックスをインターネットに提示することなく、フォームをキャプチャして中継する方法があります。ここでの秘訣は、POSTがインターネット上のどこからでも取得され、IISサーバーによって取得され、IISサーバーからapacheボックスに中継されることです。PHP / cURLでこれを行うことを検討しましたが、このようなものを使用することでうまくいくかどうかはわかりません。

<?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);
?>

誰かが私を正しい方向に向けることができますか?ありがとう。

4

3 に答える 3

4

含めた最初のステートメントは正しく機能しましたが、フォームに複数の選択オプションがある値を渡していませんでした。フィールドに「配列」を入力するだけでした。私はこれを行うことでそれを修正しました:

$postParams = file_get_contents("php://input"); 


$ch = curl_init('http://mysite/capture.php');
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postParams);
curl_exec ($ch);
curl_close ($ch);

次に、クライアントを「ありがとう」ページにリダイレクトする必要がありました。バックエンド プログラムはこのデータを送信していましたが、cURL を機能させることができませんでした。ヘッダーを更新して値を1.そのように:

header("refresh:1;url=http://mythankyoupage");  

助けてくれてありがとう!

于 2012-10-29T18:51:41.333 に答える
0

if im understanding you correctly, you are wanting to send post data?

try this:

$url = 'http://server.com/path';
$data = array('key1' => 'value1', 'key2' => 'value2')

// use key 'http' even if you send the request to https://...
$options = array('http' => array(
    'method'  => 'POST',
    'content' => http_build_query($data)
));
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);

you dont have to build the $data array yourself, you can just pass on the $_POST array.

于 2012-10-26T19:45:59.213 に答える
0

スヌーピーを使用。それは大いに役立ちます。または、一時DBにデータを保存し、小さなボットを作成し(スヌーピーを再び使用できます)、これがWebサーバーと通信し、好きなようにデータを操作できるようにします. cron タブで、このボットを cron としてスケジュールします。

于 2012-11-06T12:16:03.920 に答える