5


5

複数のスクリプトにPOSTするためのフォームがあります。 これを最も簡単な方法で行う方法

Javascript、Curl、またはSnoopyクラスを使用して実行できることはわかっていますが、これが最も簡単で最良の方法です。

一方のスクリプトは電子メールを送信し、それはphpファイルです。もう一方は他の場所でホストされます。

両方のスクリプトでデータを収集する必要があります。

4 Answer


5


これを実行する最良の方法は、まずフォームをローカルスクリプトに送信し、次にCURLを使用してリモートスクリプトに受信した(フィルタ処理済み)データをPOSTすることです。 それからちょうど応答を見なさい。

それから、単に電子メールを送って、あなたの地元のもののリモートスクリプトからの応答を処理してください。


3


これを行う最も簡単な方法は、jQueryを使用して$ .ajax(または$ .postまたは$ .get)を各スクリプトに送信し、それぞれのスクリプトから結果を取得して、結果を元に戻すことです。

$(document).ready(function(){$( '#mySubmitButton')。click(function(){//メールスクリプトにデータを送信する$ .post( 'send-email.php'、$( 'form') ).serialize()、function(data、textStatus){// dataはスクリプトアラートの結果です(data);});

//他のスクリプトにデータを送信する$ .post( 'my-other-script.php'、$( 'form')。serialize()、function(data、textStatus){// dataはスクリプトアラートの結果です(データ);}); ;)); ;));
  • update:* serializeコマンドは送信中のデータです。 jQueryのシリアライズ関数を見てください。 それは基本的にあなたのフォームの様々な入力、選択、テキストエリア、チェックボックスなどを取り、そしてこれらを次のような文字列に入れるだけです:

myNameInput = john

フォーム要素名とその値の単なる文字列です。 それがajaxコマンドを介して外部スクリプトに送信されるものです。

副次的な注意として、直列化を行うときは、フォーム要素すべてに_id_属性ではなく_name_属性があることを確認してください。 シリアライズは彼らの_id’s_には何の注意も払いません。 彼らの名前だけ。


1


これが1つのアクションを使用して複数のホストにフォームを送信することになったものです。

私は通常のメールスクリプトを投稿してからCurlを使って2番目のホストに投稿するコードを含めました。

以下は、 'extract’を使用する必要がないなど、いくつかのマイナーな調整を加えた実際のコードです。

(http://php.dzone.com/news/execute-http- post -using-php -cu)にあります

//extract data from the post
抽出($ _ POST);

//set POST variables
$ url = 'http://domain.com/get-post.php'; $ fields = array( 'lname' => urlencode($ last_name)、 'fname' => urlencode($ first_name)、 'title' => urlencode($ title)、 'company' => urlencode($施設)、 ' age '=> urlencode($ age)、' email '=> urlencode($ email)、' phone '=> urlencode($ phone));

//url-ify the data for the POST
foreach($フィールドとして$キー=> $値){$ fields_string。= $キー。 '='。$値。

//open connection
$ ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ ch、CURLOPT_URL、$ url); curl_setopt($ ch、CURLOPT_POST、count($ fields)); curl_setopt($ ch、CURLOPT_POSTFIELDS、$ fields_string);

//execute post
$ result = curl_exec($ ch);

//close connection
curl_close($ ch);


1


私はASPでこれをしなければなりませんでした。 あるドメインのEメール処理スクリプトにフォームを投稿し、1回のボタンクリックで別のドメインのMySQLデータベースにそのアクションを記録したいと思いました。 これは、他のさまざまな状況でも役に立ちます。

HTMLフォーム定義に複数のACTIONSを設定する方法はありません。 そのため、ある場所に送信し、フォームを処理してから、フォームを別の場所に「再投稿」するだけです。 これは任意の長さのスクリプトの "チェーン"で実行できます。

最初にこのASPサブルーチンをスクリプトに追加してください。 PHPや他の言語を使用している場合は、このコードを自分の言語に変換するだけで構いません。その概念はうまくいきます。

sub RePost(宛先)RePostString = ""

ごめんなさい! 内部スクリプトエラーが発生しました。」

それから、あなたのプロセスの終わりに、ちょうどこのようなsubへの呼び出しで終わります:

"http://www.SomeOtherDomain.com/SomeOtherScript.asp"を再投稿してください。

必要に応じて、すべてのスクリプトで連鎖プロセスを繰り返します。最後に、最終的には組織のドメインのページ(フォームの元の場所)にリダイレクトするか、ユーザーに成功のメッセージを表示するための操作を行います。