PHP

[初心者向け]お問い合わせフォームの作り方[意外と簡単]

みなさんこんにちは!ワトスンです。
今回は、、

HTML/PHP言語を使ってお問い合わせファームを作るにはどうしたらいい?難しそうだけど大丈夫かな?

といった疑問に答えます。

■読んでほしい人
お問い合わせフォームをつくって、サイトを充実させたい方

WordPressを利用している方は、「Contact Form 7」というプラグインを使えばすぐにお問い合わせフォームを実装できます。
今回はPHPファイルでお問い合わせフォームを作成する方法をご紹介します。

お問い合わせフォームの作り方手順

お問い合わせフォームを作るには、3つのファイルが必要となります!

入力フォーム(input.php)
↓
確認画面(confirm.php)
↓
送信完了画面(mailto.php)

の3つです。

この3つのファイルの流れとしては、
入力フォームでユーザーに入力をしてもらい(input.php)
↓
その入力内容を確認画面で処理し問合せ内容の最終確認を行い(confirm.php)
↓
問題なければお問い合せ内容をメールで送信し(confirm.php)
↓
送信が完了したことを送信完了画面で確認する(mailto.php)

といった流れになります。

それではさっそくそれぞれのファイルの作成方法をご紹介していきます!

入力フォーム(input.php)の作成

入力フォームの完成図とファイル内容をご紹介します。

入力フォーム完成図

input.phpファイル

input.phpファイルでは、お問い合わせの入力フォームを作成しています。
お問い合せ内容の入力と確認画面(confirm.php)への送信を行います。
こちらのファイルはHTMLで作成したフォームなので複雑なコードなどはありません。

このファイルできちんと理解しておくべき点は、
1行目のaction属性とmethod属性そしてname属性です。

action属性では、入力フォームのデータの送信先を指定します。
今回はconfirm.phpへ送信します。
 
 
method属性では、送信方法の種類(HTTPメソッド)を指定します。
(HTTPメソッド・・・ブラウザからサーバーに対して出される送信の際のお願いの種類。「GET」や「POST」など)
今回は「POST」メソッドを指定します。

method属性に関して詳しく知りたい方は、「HTTPリクエストメソッドとは」を参考にして下さい!
 
 
お問い合わせ内容としては、
・お名前
・ふりがな
・メールアドレス
・電話番号
・性別
・お問い合わせ項目
・お問い合わせ内容
の7つの項目を記入できるようにしました。

各項目にname属性が指定されているのに気づきましたでしょうか?
これは簡単に説明すると、フォームで入力された内容をconfirm.phpへデータとして送信するために必要な属性です。

そして、入力フォームで入力された内容を確認画面(confirm.php)に送信し処理していきます。
次はconfirm.phpファイルの作成に移ります。

確認画面(confirm.php)の作成

確認画面の完成図とファイル内容をご紹介します。

確認画面完成図

confirm.phpファイル

confirm.phpでは、
・入力された内容を取得し確認画面を表示
・メール内容を作成し入力されたメールアドレス宛に送信
・送信が完了したら送信完了画面(mailto.php)へ移動
を行います。

1行目〜11行目は、入力画面(input.php)で入力されたデータを取得しています。

この2行目では、$_SERVER[“キー名”]を利用し、「POSTリクエスト」を取得した場合のif文を作成しています。 
 
 
13行目〜53行目で、入力されたデータをもとに確認画面を表示しています。

この13行目のaction属性を空白にしているのは、送信ボタンを押した際にこのconfilm.phpファイルで送信処理を行うため自分自身にactionを指定しています。 
 
 
55行目〜91行目で、送信するメール内容の作成と送信を行っています。
お問い合わせフォーム作成で一番めんどうなのが、文字化け回避です。

この57行目〜58行目の「mb_language()」「mb_internal_encoding()」では、文字言語と文字コードを指定しています。

この85行目では、ヘッダ内にある送信元の名前の文字化け回避のため、「mb_encode_mimeheader()」を使用してMIMEヘッダの文字列をエンコードしています(エンコードとはデータを他の形式に変換すること)。

この86行目〜87行目では、「mb_send_mail()」を使用してメールの送信を行います。
ユーザーへの送信とお問い合わせを管理している管理者向けへの送信を行います。
使い方は、mb_send_mail(宛先,件名,メッセージ,ヘッダ)の形で使用します。

この88行目〜89行目では、「header()」を使用し、送信処理が完了したら送信完了画面へ移動するように指定しています。「exit;」は処理の終了を行います。

送信完了画面(mailto.php)の作成

送信完了画面の完成図とファイル内容をご紹介します。

送信完了画面出来上がり図

mailto.phpファイル

mailto.phpは送信完了画面を表示しているだけなので、内容は正直お好みで作成してもらえれば大丈夫なのですが、
サンプルとして下記コードを載せています。

こちらのmailto.phpは送信が完了したことを表示するだけなので、自由にカスタマイズして頂いて大丈夫です。
お問い合わせ完了後にトップページなどへ戻るリンクを設置しておくといいかなと思います。

以上でお問い合わせフォームの完成です!

お問い合わせフォームの作り方まとめ

・入力フォーム(input.php)
・確認画面(confirm.php)
・送信完了画面(mailto.php)
上記3つのファイルの作成方法をご紹介してきました。
この3つのファイルでお問い合わせフォームを作成できます。

いかがだったでしょうか?
そこまで複雑な内容ではないのですが、もしわからないことなどがありましたらコメントまたはTwitterのDMからご相談ください!
コピペでそれぞれカスタマイズして使用していただけたら簡単です!是非お試しください!

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

2 件の投稿

  • 質問ですconfirm.phpのコードをコピペしたら$body = <<< EOM // メール本文を変数bodyに格納の部分がsyntax error, unexpected<<(T_SL)と出て、
    エラーになるのですがどうしたらいいでしょうか?

    • 「syntax error, unexpected」というエラーは、閉じカッコや行末のセミコロンなどが抜けているときに発生する構文エラーです。ですのでコピペの際にそのような箇所が抜けていないか一度確認していただけたらなと思います!
      たまにコピペの際にセミコロンなどが微妙に違うものになってしまう場合もあるので、そちらも一度ご確認いただけると幸いです。

関連記事