コピーしたページをメールで送信する方法。 HTML と PHP を使用して電子メールでデータを送信する最も単純な形式。 PHPを使用してHTMLフォームから受信したデータを電子メールに送信する

21.08.2020

このサイトで最も人気のある機能の 1 つはアプリケーションまたは注文フォームで、そこからのデータが電子メールでサイト所有者に送信されます。 通常、このようなフォームは単純で、データ入力用の 2 つまたは 3 つのフィールドで構成されます。 このような注文フォームを作成するにはどうすればよいですか? これには、HTML マークアップ言語と PHP プログラミング言語を使用する必要があります。

HTML マークアップ言語自体は単純です。必要なのは、特定のタグをどこにどのように配置するかを理解することだけです。 PHP プログラミング言語では、状況が少し複雑になります。

プログラマにとって、このようなフォームの作成は難しくありませんが、HTML レイアウト設計者にとっては、一部のアクションが難しく見えるかもしれません。

HTMLでデータ送信フォームを作成する

最初の行は次のようになります

これはフォームの非常に重要な要素です。 その中で、データがどのようにどのファイルに転送されるかを示します。 で この場合すべては POST メソッドを使用して send.php ファイルに送信されます。 このファイル内のプログラムはそれに応じてデータを受信する必要があり、そのデータは post 配列に含まれ、指定された電子メール アドレスに送信されます。

フォームに戻りましょう。 2 行目にはフルネームを入力するフィールドが含まれます。 次のコードがあります:

フォームのタイプはテキストです。つまり、ユーザーはここにキーボードからテキストを入力またはコピーできます。 name パラメータにはフォームの名前が含まれます。 この場合、それは fio であり、ユーザーがこのフィールドに入力した内容はすべてこの名前で送信されます。 プレースホルダー パラメーターは、このフィールドに説明として書き込まれる内容を指定します。

次の行:

ここでは、ほとんどすべてが同じですが、フィールドの名前は電子メールであり、ユーザーがこのフォームに電子メール アドレスを入力するという説明が示されています。

次の行は「送信」ボタンになります。

フォームの最後の行がタグになります

それでは、すべてをまとめてみましょう。





次に、フォーム内のフィールドを必須にしましょう。 次のコードがあります。





HTML フォームからデータを受け入れるファイルを作成する

これはsend.phpというファイルになります。

ファイルでは、最初の段階で post 配列からデータを受け入れる必要があります。 これを行うには、2 つの変数を作成します。

$fio = $_POST["fio"];
$email = $_POST["email"];

PHP の変数名の前には $ 記号が付き、各行の最後にはセミコロンが置かれます。 $_POST は、フォームからのデータが送信される配列です。 HTMLフォームでは送信方法をmethod="post"として指定します。 したがって、2 つの変数が次から取得されます。 HTMLフォーム。 サイトを保護するには、これらの変数をいくつかのフィルター (php 関数) に渡す必要があります。

最初の関数は、ユーザーがフォームに追加しようとするすべての文字を変換します。

この場合、php で新しい変数は作成されませんが、既存の変数が使用されます。 フィルターが行うことは、文字を変換することです。<" в "<". Также он поступить с другими символами, встречающимися в html коде.

2 番目の関数は、ユーザーが URL をフォームに追加しようとすると、URL をデコードします。

$fio = urldecode($fio);
$email = urldecode($email);

3 番目の関数では、行の先頭と行末にスペースがある場合は、スペースを削除します。

$fio = トリム($fio);
$email = トリム($email);

PHP 変数をフィルタリングできる関数は他にもあります。 これらを使用するかどうかは、攻撃者がこの HTML 電子メール送信フォームにプログラム コードを追加しようとすることをどの程度懸念しているかによって異なります。

HTMLフォームからPHPファイルに転送されたデータの検証

このコードが機能するかどうか、およびデータが転送されているかどうかを確認するには、echo 関数を使用してコードを画面に表示するだけです。

$fio をエコーし​​ます。
エコー」
";
エコー $email;

ここの 2 行目は、php 変数の出力を複数の行に分割するために必要です。

PHPを使用してHTMLフォームから受信したデータを電子メールに送信する

データをメールで送信するには、PHP のメール関数を使用する必要があります。

mail("送信先のアドレス", "レターの件名", "メッセージ (レターの本文)","From: レターの送信元の電子メール \r\n");

たとえば、サイト所有者または管理者の電子メールにデータを送信する必要があります。 [メールで保護されています].

レターの件名は明確である必要があり、レターのメッセージにはユーザーが HTML フォームで指定した内容が含まれている必要があります。

郵便(" [メールで保護されています]"、"サイトからお申し込み"、"フルネーム:".$fio."。 電子メール: ".$email ,"差出人: [メールで保護されています]\r\n");

指定したメールアドレスにフォームがPHPで送信されたかどうかを確認する条件を追加する必要があります。

if (メール(" [メールで保護されています]"、"サイトから注文"、"フルネーム:".$fio."。 電子メール: ".$email ,"差出人: [メールで保護されています]\r\n"))
{
echo "メッセージは正常に送信されました";
) それ以外 (
}

したがって、HTML フォーム データを電子メールに送信する send.php ファイルのプログラム コードは次のようになります。

$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = トリム($fio);
$email = トリム($email);
// $fio をエコー;
//エコー "
";
// $email をエコー;
if (メール(" [メールで保護されています]"、"サイトからお申し込み"、"フルネーム:".$fio."。 電子メール: ".$email ,"差出人: [メールで保護されています]\r\n"))
( echo "メッセージは正常に送信されました";
) それ以外 (
echo "メッセージの送信中にエラーが発生しました";
}?>

データがファイルに転送されているかどうかを確認する 3 行がコメントアウトされています。 これらはデバッグのみに必要なため、必要に応じて削除できます。

フォームを送信するための HTML と PHP コードを 1 つのファイルに配置します

この記事へのコメントでは、HTML フォームとデータを電子メールに送信するための PHP コードの両方が 2 つのファイルではなく 1 つのファイルに含まれていることを確認する方法について多くの人が質問しています。

この作業を実装するには、フォームの HTML コードを send.php ファイルに配置し、POST 配列 (この配列はフォームから送信されます) 内の変数の存在をチェックする条件を追加する必要があります。 つまり、配列内の変数が存在しない場合は、ユーザーにフォームを表示する必要があります。 それ以外の場合は、アレイからデータを受信して​​受信者に送信する必要があります。

send.php ファイル内の PHP コードを変更する方法を見てみましょう。



サイトからのお申込みフォーム


// POST 配列に変数が存在するかどうかを確認します
if(!isset($_POST["fio"]) および !isset($_POST["email"]))(
?>





) それ以外 (
//フォームを表示する
$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = トリム($fio);
$email = トリム($email);
if (メール(" [メールで保護されています]"、"サイトからお申し込み"、"フルネーム:".$fio."。 電子メール: ".$email ,"差出人: [メールで保護されています]\r\n"))(
echo "メッセージは正常に送信されました";
) それ以外 (
echo "メッセージの送信中にエラーが発生しました";
}
}
?>



isset() PHP 関数を使用して、POST 配列内の変数の存在を確認します。 条件内でこの関数の前にある感嘆符は否定を意味します。 つまり、変数が存在しない場合は、フォームを表示する必要があります。 感嘆符を付けなかった場合、この条件は文字通り「存在する場合はフォームを表示する」という意味になります。 そして、これは私たちの場合には間違っています。 もちろん、名前をindex.phpに変更することもできます。 ファイル名を変更する場合は、次の行のファイル名も忘れずに変更してください。

。 フォームは同じページ (たとえば、index.php) にリンクする必要があります。 コードにページタイトルを追加しました。

Web サイトから PHP フォームを送信するときに発生する一般的なエラー

1 つ目は、おそらく最もよくある間違いですが、メッセージのない空白のページが表示される場合です。 これは、ページのコードにエラーがあったことを意味します。 PHP ですべてのエラーの表示を有効にする必要があります。そうすれば、エラーが発生した場所が表示されます。 コードに追加します:

ini_set("表示エラー","オン");
error_reporting("E_ALL");

send.php ファイルはサーバー上でのみ実行する必要があります。そうしないと、コードは単に機能しません。 常に外部メール サーバーにデータを送信するように構成されているとは限らないため、これはローカル サーバーではないことをお勧めします。 サーバー上でコードを実行しない場合、PHP コードはページに直接表示されます。

したがって、正しく動作させるために、send.php ファイルをサイトホスティングに配置することをお勧めします。 原則として、すべてがすでにそこで設定されています。

もう 1 つのよくある間違いは、「メッセージは正常に送信されました」という通知が表示されるのに、手紙がメールで届かない場合です。 この場合、次の行を注意深く確認する必要があります。

if (メール(" [メールで保護されています]"、"サイトから注文"、"フルネーム:".$fio."。 電子メール: ".$email ,"差出人: [メールで保護されています]\r\n"))

の代わりに [メールで保護されています] 手紙の送信先となる電子メール アドレスが必要ですが、代わりに[メールで保護されています] このサイトの既存のメールアドレスである必要があります。 たとえば、Web サイトの場合、これは次のようになります 。 この場合にのみ、フォームのデータを含むレターが送信されます。

インターネット上には面白くて役立つコンテンツがたくさんあります。 場合によっては、サイトからコピーして別の方法で転送するよりも、興味深い情報へのリンクを友人に送信する方がはるかに簡単な場合があります。 できるだけ便利にリンクを送信するにはどうすればよいですか?

電子メール

最新の電子メール サービスのほとんどは、リンクを挿入するだけの機能をサポートしています。 つまり、ブラウザのアドレスバーからコピーしてレターに貼り付けるだけで「クリック可能」になります。つまり、クリックすると目的のページが自動的に開きます。

サイトまたはページのアドレスを手動で入力した場合、リンクはこのように機能しません。 これを修正するには、リンクの先頭に http:// または www を書いてみてください。 つまり、site.com の代わりに http://site.com または www.site.com と記述する必要があります。これ以降、リンクをクリックできるようになります。

レター内の特定の単語へのリンクを添付することもできます。 これを行うには、それらを選択してツールバーの「リンクの挿入」をクリックし、ウィンドウ内で目的のページのアドレスを指定する必要があります。 メールで HTML タグの使用がサポートされている場合は、次のようなリンクを挿入できます: リンクを添付する単語。

クラスメイト

Odnoklassniki にリンクを送信する前に、これを可能にする特別なソフトウェアをダウンロードする必要があります。 そのようなプログラムの 1 つが GF Tools です。 完全に無料でとても使いやすいです。 別のユーザーに送信するメッセージにリンク テキストを貼り付けることもできます。 壁に掲示することも可能です。

ヴコンタクテ

壁のステータスやメッセージにリンクを挿入することもできます。 この場合、リンクはすべてのユーザーにとっても「クリック可能」になります。 ウォールにリンクを挿入すると、サイト スクリプトは、リンク先のページの最初の画像と、そのページの数行のテキストを自動的に表示します。

Web ページを電子メールに送信するにはどのような方法がありますか?
質問の作成者の意図に応じて、さまざまな方法で。

たとえば、スクリーンショットを撮るプログラムがある場合、開いているページのスクリーンショットを撮り、それを画像として必要な人の電子メールに送信できます。 この場合、画像は無効になり、リンクは機能しなくなります。

標準的な方法を使用してページを保存するのがより正しい答えではないかと思います。 ブラウザの「ファイル」メニューをクリックし、「名前を付けて保存」をクリックしてWebページ全体を保存します。 このページの送信先の人がインターネットにアクセスできる場合は、ページからリンクをたどることができ、機能します。

最初のケースでは、一般的な画像形式 (bmp、jpg、gif) を選択すると、ページを開くのが簡単になります。 2 番目のケースでは、あるブラウザで保存したページを別のブラウザで開くと、正しく表示されないか、まったく開かない可能性があります。

どちらのケースも、インターネットに常時アクセスできない人に送信するために、アーカイブに保存するように設計されています。 この場合は手紙に添付した方が良いでしょう。

しかし、常にインターネットを使用している人であれば、なぜページを保存して送信したり、添付ファイルを作成したりするのでしょうか? アドレスバーにある目的のページのリンクをコピーして、レターの本文に貼り付ける方がはるかに簡単です。

これを行うには、たとえば、Archive.today: archive today などの特殊なオンライン アーカイブ サービスを使用できます。

ここでは、リソースの URL アドレスを入力するだけで、システム自体が zip ファイルと Web ページの「スナップショット」への URL リンクを作成します。元のバージョンが消えても、スナップショットは常にオンラインになります。

zip ファイルを電子メールに添付したり、Web ページの「スナップショット」へのリンクを電子メール フィールドに挿入したり、全体を電子メールで送信したり、その他の方法で保存したりできます。

たとえば、モスクワ FAQ ページの今日のバージョン (zip ファイルとともに) はここから入手できます: 今日のアーカイブ

オンライン サービスを使用してスクリーンショットを撮ることもできます。たとえば、Web-capture: web-capture net

Web ページを電子メールに送信するにはどのような方法がありますか?
質問の作成者の意図に応じて、さまざまな方法で。

たとえば、スクリーンショットを撮るプログラムがある場合、開いているページのスクリーンショットを撮り、それを画像として必要な人の電子メールに送信できます。 この場合、画像は無効になり、リンクは機能しなくなります。

標準的な方法を使用してページを保存するのがより正しい答えではないかと思います。 ブラウザの「ファイル」メニューをクリックし、「名前を付けて保存」をクリックしてWebページ全体を保存します。 このページの送信先の人がインターネットにアクセスできる場合は、ページからリンクをたどることができ、機能します。

最初のケースでは、一般的な画像形式 (bmp、jpg、gif) を選択すると、ページを開くのが簡単になります。 2 番目のケースでは、あるブラウザで保存したページを別のブラウザで開くと、正しく表示されないか、まったく開かない可能性があります。

どちらのケースも、インターネットに常時アクセスできない人に送信するために、アーカイブに保存するように設計されています。 この場合は手紙に添付した方が良いでしょう。

しかし、常にインターネットを使用している人であれば、なぜページを保存して送信したり、添付ファイルを作成したりするのでしょうか? アドレスバーにある目的のページのリンクをコピーして、レターの本文に貼り付ける方がはるかに簡単です。

これを行うには、たとえば、Archive.today: archive today などの特殊なオンライン アーカイブ サービスを使用できます。

ここでは、リソースの URL アドレスを入力するだけで、システム自体が zip ファイルと Web ページの「スナップショット」への URL リンクを作成します。元のバージョンが消えても、スナップショットは常にオンラインになります。

zip ファイルを電子メールに添付したり、Web ページの「スナップショット」へのリンクを電子メール フィールドに挿入したり、全体を電子メールで送信したり、その他の方法で保存したりできます。

たとえば、モスクワ FAQ ページの今日のバージョン (zip ファイルとともに) はここから入手できます: 今日のアーカイブ

オンライン サービスを使用してスクリーンショットを撮ることもできます。たとえば、Web-capture: web-capture net