PHP メールフォーム(お問い合わせフォーム)をプログラミングしてみる

PHPプログラミングの初級編、中級編を終えれば、メールフォームのプログラミングができる程度の知識は身についていると思います。

メールフォームの仕様

今回開発するメールフォームには

  • お名前
  • フリガナ
  • メールアドレス
  • メールアドレス(確認用)
  • お問い合わせ内容

の項目があり、全項目必須入力、入力されたメールアドレス宛と管理者にメールが送信される。

ページは

  • 入力画面
  • 確認画面
  • 完了画面
  • エラー画面

を用意します。

セキュリティー

今回開発するメールフォームはXSSへの対策は行いますが、それ以外の機能はまだ実装しません。
後々、ブラッシュアップしていく過程で色々な機能を実装していきたいと思います。

created by Rinker
Webアプリケーションにはなぜ脆弱性が生まれるのか?脆弱性を解消するにはどうプログラミングすればよいか?PHPサンプルへの攻撃を通して脆弱性が生まれる原理と具体的な対処方法が学べる!
created by Rinker
「この目的を実現するためには、どの文法テクニックが適合しやすいだろう」?「このプログラムをより読みやすくするために、どんなアプローチができるだろう」?といったことを思考しつつ、「とりあえずは動く」だけで終わらない、現場に求められる品質を形にするための知識とテクニックを解説します。
created by Rinker
Webアプリケーションの定番言語であるPHPの基礎から実践までを、上下巻のフルボリュームで集大成。「この目的を実現するためには、どの文法テクニックが適合しやすいだろう」?「このプログラムをより読みやすくするために、どんなアプローチができるだろう」?

HTMLでメールフォームで利用するページを作成する

それではHTMLでメールフォームをコーディングしてみます。
※今回はソースを簡素化してみやすくするためCSSは利用していません。

こちらは入力された内容を確認するための確認画面として利用するHTMLです。

送信完了後表示する完了画面(サンクスページ)のHTMLです。

送信時にエラーが発生した場合に表示するエラー画面のHTMLです。

初期設定部分やデータの受け渡し部分をプログラミングする

初期設定部分

では、<form></form>から送信されたデータの受け取りや初期設定部分をプログラミングしたいと思います。

  • 今回データの一時保存で$_SESSIONを利用するので「session_start()」を記述
  • 入力、確認、完了、エラーページを振り分けるための変数を用意
  • メールアドレス設定用の変数を用意し、メールアドレスを代入
  • 送信者名を表示するための変数を用意、代入
  • ページタイトルを変数で管理するために用意、代入
  • 自動返信メールの件名用の変数を用意、$page_titleと連結して件名を代入
  • エラー確認用のフラグを用意、初期値は「false」=「エラー」、入力を確認できたら「true」=「入力確認済み」
  • エラーのコメントを表示するための変数を用意、それぞれにエラーコメントを代入

上記が、プログラミングの内容となります。

データの受け渡し部分

POST形式で送信された場合に動作するように「$_SERVER[‘REQUEST_METHOD’] == ‘POST’」を用意し
入力画面から確認画面へ遷移時「isset( $_POST[‘confirm’] ) は name=”confirm” ボタンを押下した場合にtrueとなる」に$_SESSIONに$_POSTの値をそれぞれ代入する。
代入前に「$_SESSION = array()」でセッションを初期化する。

必須入力のチェック部分をプログラミングする

上記のデータ受け渡し後に、必須項目が入力されているかを確認する。
「empty」関数は引数の値がからの場合、trueを返すので、引数がからの場合は$err、$name01_errをそれぞれ「true」とし、未入力と判断する。

メールアドレスは、入力必須かつ「メールアドレス」と「メールアドレス(確認用)」が一致かつ、正しいメール形式かを確認する。

※正しいメール形式化の判断は正規表現で確認。

ページの振り分け

確認画面へ遷移時に入力必須のチェックを行い、問題なければ「確認ページ」を表示、エラーの場合は、ページ遷移せず入力画面のまま、入力エラーの内容を各項目に表示する

確認画面から修正を行いたい場合のため、「入力ページ」へ戻るためのスクリプトを記述

メール送信をクリックされた時のスクリプトを記述

確認画面からメール送信ボタンをクリックした際の処理を記述する。
確認画面から、送信押下時もエラーチェックを行い、エラーの場合は入力画面へ戻る。

問題なければ、メールの文面を生成しmb_send_mailで管理者、入力者にそれぞれメールを送信、me+senf_mailの戻り値「$retへ代入」が「true」の場合はサンクスページへ、エラーが来た場合は「エラー」ページへ遷移する。

個別に解説したスクリプトとHTMLをまとめる

ここまで個別に解説して来ましたが、これらを一つのファイルにまとめて記述したものが下記になります。
下記の内容を記述し〇〇.phpで保存しサーバーにアップロードし動作を確認してみてください。

PHPでメールフォームを開発してみて

メールを送信するだけのページですが、中には色々な条件分岐があり多少複雑に見えるかもしれませんが、PHPでのメールフォームのスクリプトは大抵このような感じです。

自身で開発するときには、入力項目や選択項目を増やしたり、必須項目の有無を設定してみたり色々試してみてください。

created by Rinker
PHP7の基本構文から、クラス、DB連携、セキュリティ対策まで、しっかり習得! PHPプログラミングの標準教科書『独習PHP』が、最新のPHP7に対応。PHPでWebページ/アプリケーションを開発する際に必要な基礎的な知識、PHPの基本構文から、クラス、データベース連携、セキュリティまで、詳細かつ丁寧に解説します。
created by Rinker
時間がなくたって、プログラミングは学べます。学習を躊躇していた人たちに、既存の入門書で挫折した人たちに、「これならできる!」の最短カリキュラムを、土日の14時間で提供。まったくのプログラミング初心者が簡単なWebデータベースアプリを構築できるまでの成長コースを、手取り足取り、導きます。

コメントする

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)