このサイトで最も人気のある機能の 1 つはアプリケーションまたは注文フォームで、そこからのデータが電子メールでサイト所有者に送信されます。 通常、このようなフォームは単純で、データ入力用の 2 つまたは 3 つのフィールドで構成されます。 このような注文フォームを作成するにはどうすればよいですか? これには、HTML マークアップ言語と PHP プログラミング言語を使用する必要があります。
HTML マークアップ言語自体は単純です。必要なのは、特定のタグをどこにどのように配置するかを理解することだけです。 PHP プログラミング言語では、状況が少し複雑になります。
プログラマにとって、このようなフォームの作成は難しくありませんが、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 のメール関数を使用する必要があります。
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 コードの両方が 2 つのファイルではなく 1 つのファイルに含まれていることを確認する方法について多くの人が質問しています。
この作業を実装するには、フォームの HTML コードを send.php ファイルに配置し、POST 配列 (この配列はフォームから送信されます) 内の変数の存在をチェックする条件を追加する必要があります。 つまり、配列内の変数が存在しない場合は、ユーザーにフォームを表示する必要があります。 それ以外の場合は、アレイからデータを受信して受信者に送信する必要があります。
send.php ファイル内の PHP コードを変更する方法を見てみましょう。
isset() PHP 関数を使用して、POST 配列内の変数の存在を確認します。 条件内でこの関数の前にある感嘆符は否定を意味します。 つまり、変数が存在しない場合は、フォームを表示する必要があります。 感嘆符を付けなかった場合、この条件は文字通り「存在する場合はフォームを表示する」という意味になります。 そして、これは私たちの場合には間違っています。 もちろん、名前をindex.phpに変更することもできます。 ファイル名を変更する場合は、次の行のファイル名も忘れずに変更してください。