コピペOK、プレーンなのでカスタマイズ向き!PHPでメールフォームの作成

基本的なメール送信機能はコピペするだけでOK!
コードも短いのでカスタマイズにも向いてると思います :-D

shared-img-thumb-PAK86_pennotekakikomi20140312_TP_V-600x400

メールフォームの流れ

入力ページ(form.php)→確認ページ(confirm.php)→完了ページ(submit.php)

入力ページではスマホで表示された際に最適なキーボードを表示したり、名前や住所の自動入力を行なうための記述も行います。

完了ページではF5やページのリロードでメールを連投を防ぐ記述もします。

 入力ページ(form.php)

 確認ページ(confirm.php)

確認ページでは入力ページの値を受け取って表示します。
値は入力フォームのnameをキーに$_POSTの配列に保存されています。

送信処理を行なうためにこのページでもフォームの記述があります。
これらはtype=”hidden”なのでページ上には表示されません。

 完了ページ(submit.php)

メールの送信を行なう部分です。

mb_send_mailは「送り先メールアドレス,題名,内容,送り元」の順で記述します。
メールの送信に成功するとtrueが返ってきます。

 連投を防ぐためセッションを利用する

ここまでの記述でおそらくメールを送信することは出来ると思いますが、完了ページで更新した際にメールが何度も送られてしまうことになります。
それを防ぐためにセッションにキーを保存して正しいステップでメールが送信されているか確認しましょう。

セッションはphpファイルの一番上に記述することを忘れないようにしましょう。

confirm.phpに以下の記述を追加します。

 次にsubmit.phpで発行したキーが正しいものか判定する記述を行います。

 form.phpにも追加の記述が必要

このままでは確認ページからform.phpに戻って再度入力し、確認ページ→完了ページと移動した場合にエラーが発生します。
なので、form.phpではセッションをリセットするための記述を行いましょう。

 メールフォーム作成のまとめ

できましたでしょうか?
上記のメールフォームを基本として自分の希望に沿ってカスタマイズしていきましょう。

ただ、今回の方法では確認ページから戻った時や入力ページで更新した時などにフォームに入力されていた内容がリセットされてしまいます。
$_POSTではなくセッションに値を保存すれば解決するのですが、カスタマイズがちょっとむずかしくなるという理由でこちらの方法を紹介しました。

参考にさせていただいた記事

以下の記事を参考にさせていただきました。ありがとうございます。

PHPでメールフォーム作成について解説しています
みなさん、エントリーフォームを制作する際、どのような施策をおこなっていますか? コンバージョン率をあげるために、入力項目を見直したり、入力ステップを明確にしたりなど、ユーザーがストレスを感じないように入力フォーム最適化(EFO対策 = Entry Form Optimization)をおこなっていると思います。 サイト...

シェアする

  • このエントリーをはてなブックマークに追加