2009-08-21 14 views
1

私は現在、自分のサイトの外にあるページにフォームを送信するスクリプトを手に入れようとしていますが、顧客から与えられた回答も私にメールします。 mail()関数はメールにはうまくいきましたが、これらの値をどのように取得して外部ページにも送信するにはどうすればよいですか?フォームを送信してPHPでメールを送信

ありがとうございました! POSTの場合

答えて

2

あなたのスクリプトに提出するフォームを取得した場合、最初の電子メールを送信して、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; 
+0

嫌いなことはありますが、これについてどうすればいいですか? –

+0

すばらしい、夢のように働く例があります、ありがとう! –

-2

、あなたは処理アクションとして、外部のページを設定する必要があります:

<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"); 
+0

いいえ、それは問題ではありません。現在のところ、このフォームはすでに内部でメール機能を持​​つ送信フォームに送信するために上記を行います。だから私はどのように外部のページにもそれを提出するだろうか? –

0

電子メールの送信に使用しているスクリプトからカスタムHTTP POST要求を送信できます。試しにfsockopenを試して接続を確立し、フォームから受け取ったばかりのデータを含む独自のHTTPリクエストを送信してください。

編集:

もう少し具体的です。単純なHTTP POSTリクエストを送信する方法を示す例がthisです。ただ、このようなあなたの$_POST配列でそれをシード:

do_post_request(your_url, $_POST); 

、それはトリックを行う必要があります。その後、オプションで応答を評価して、すべてがOKになったかどうかを確認できます。

+0

これはうまくいかなかったようです... –

0

外部フォームのソースを調べて、関連するフィールドのHTML nameを特定し、フォームがGETまたはPOSTを使用して送信されるかどうかを判断する必要があります。

フォームがGETメソッドを使用している場合、あなたは簡単に実際のフォームと同じフォームを次のクエリ文字列を生成することができます。一方、フォームがPOSTメソッドを使用して、場合http://example.com/form.php?name1=value1&name2=value2 ...

は、あなたがcURLライブラリ(http://us2.php.net/curl)のようなものを使用してHTTP POSTリクエストを生成する必要があります。

関連する問題