私は現在、自分のサイトの外にあるページにフォームを送信するスクリプトを手に入れようとしていますが、顧客から与えられた回答も私にメールします。 mail()関数はメールにはうまくいきましたが、これらの値をどのように取得して外部ページにも送信するにはどうすればよいですか?フォームを送信してPHPでメールを送信
ありがとうございました! POSTの場合
私は現在、自分のサイトの外にあるページにフォームを送信するスクリプトを手に入れようとしていますが、顧客から与えられた回答も私にメールします。 mail()関数はメールにはうまくいきましたが、これらの値をどのように取得して外部ページにも送信するにはどうすればよいですか?フォームを送信してPHPでメールを送信
ありがとうございました! POSTの場合
あなたのスクリプトに提出するフォームを取得した場合、最初の電子メールを送信して、HTTPリクエストを行うためにcURLを使用することができますすることができます外部ページに、送信したい値をPOSTします。リクエストはあなたのWebサーバーから行われるため、外部サイトがユーザーのCookieに依存している場合でも、これは機能しません。
<?php
//data to post
$data = array('name' => 'tom', 'another_form_field'=>'a');
//external site url (this should be the 'action' of the remote form you are submitting to)
$url = "http://example.com/some/url";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
//make curl return the content returned rather than printing it straight out
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
if ($result === false) {
//curl error
}
curl_close($curl);
//this is what the webserver sent back when you submitted the form
echo $result;
、あなたは処理アクションとして、外部のページを設定する必要があります:
<form action="http://external-page.com/processor.php" method="POST">
<!-- Form fields go here --->
</form>
それはGETだ場合、あなたが得るために、フォームのメソッドを変更、またはカスタムクエリ文字列を作成することができ、次のいずれか
<a href="http://external-page.com/processor.php?field1=value1&field2=value2">submit</a>
編集:私はちょうどあなたを実現は、おそらくあなたのPHPの処理クラス内からこれらを送りたいです。その場合は、カスタムクエリ文字列と場所ヘッダーを設定し使用することができます
header("Location: http://external-page.com/processor.php?field1=value1&field2=value2");
いいえ、それは問題ではありません。現在のところ、このフォームはすでに内部でメール機能を持つ送信フォームに送信するために上記を行います。だから私はどのように外部のページにもそれを提出するだろうか? –
電子メールの送信に使用しているスクリプトからカスタムHTTP POST要求を送信できます。試しにfsockopenを試して接続を確立し、フォームから受け取ったばかりのデータを含む独自のHTTPリクエストを送信してください。
編集:
もう少し具体的です。単純なHTTP POSTリクエストを送信する方法を示す例がthisです。ただ、このようなあなたの$_POST
配列でそれをシード:
do_post_request(your_url, $_POST);
、それはトリックを行う必要があります。その後、オプションで応答を評価して、すべてがOKになったかどうかを確認できます。
これはうまくいかなかったようです... –
外部フォームのソースを調べて、関連するフィールドのHTML name
を特定し、フォームがGETまたはPOSTを使用して送信されるかどうかを判断する必要があります。
フォームがGETメソッドを使用している場合、あなたは簡単に実際のフォームと同じフォームを次のクエリ文字列を生成することができます。一方、フォームがPOSTメソッドを使用して、場合http://example.com/form.php?name1=value1&name2=value2 ...
は、あなたがcURLライブラリ(http://us2.php.net/curl)のようなものを使用してHTTP POSTリクエストを生成する必要があります。
嫌いなことはありますが、これについてどうすればいいですか? –
すばらしい、夢のように働く例があります、ありがとう! –