お問い合わせフォーム

【PHP】コンタクトフォームの作り方 第2回「PHP」

 

Bootstrap, Google Fonts を最新のバージョンに更新しました。(2021年7月2日)

ここまでの記事はこちら
 

第2回は「PHP」です。

前回 HTML と CSS でお問い合わせフォームのレイアウトを作成したので、今回は PHP でお問い合わせフォームの機能を実装していきます。
 


 


 

はじめに

PHP コードを書き始める前に、どのようにお問い合わせフォームが動くのか全体の流れを紹介します。

 
 
 

お問い合わせする人は「名前・メールアドレス・件名・問い合わせ内容」を入力して送信ボタンを押します。

プログラム側では、送信ボタンが押されたら全ての項目が入力されているかをチェックします。
 

全ての項目が入力されている場合は

  • メールを送信
  • 完了メッセージ表示
  • 入力された項目をクリア

 

入力されていない項目がある場合は

  • エラーメッセージ表示(入力された項目はそのまま残しておく)

という処理をします。
 
 

全体の流れ


 
 
 

PHP

少し長いですが、一気に書いてしまいましょう!

追加・変更しているコードは1~49・72~82・86・89・92・95行目です。

 
 

31・34行目

31・34行目に書いている "\r\n" は改行コードです。

ダブルクォーテーション " で囲む必要があります。
 
 

37行目

この1行でメールを送信することができます。

mb_send_mail($to, $subject, $message, $headers);
$to宛先
(カンマ区切りで複数のメールアドレスに送信できます)
$subject件名
$message本文
$headers差出人、Cc、Bcc
(複数追加する場合は d"\r\n" で区切ります)

 


 
 
 

エラーメッセージ

72~76行目では、エラーメッセージの表示をしています。

$err_msg が空でない場合($err_msg に文字列がセットされている場合)にエラーメッセージを表示します。
 


 
 

送信完了メッセージ

78~82行目では、送信完了メッセージの表示をしています。

$complete_msg が空でない場合($complete_msg に文字列がセットされている場合)に送信完了メッセージを表示します。
 


 
 
 

完成

これで全て完成です!

メールが送信されるかテストしてみてください。
 

メール送信について
ローカル環境でメール関数を使う場合、別に設定が必要になる場合があります。
初心者の方は、ローカル環境でなくウェブサーバー上でテストするのが簡単です。

MacOS をお使いの方はこちらの記事も参考にしてみてください。

【2021年版】PostfixからGmail経由でメールを送信する方法 この記事では「Postfix から Gmail 経由でメール送信する方法」を紹介しています。 macOS には Postf...
 
 

まとめ

いかがだったでしょうか?

一番始めにも書きましたが、最近は WordPress でウェブサイトを作ることが多くなり、お問い合わせフォームはプラグインで簡単に作成できるようになりました。
 

しかしメール送信は必須の機能です。
 

私が今までに頂いたウェブサービスやショッピングサイトの開発の仕事でも、メール送信機能はほぼ100%実装しました。

例えばショッピングサイトの場合

  • 受注メール(管理者宛)
  • 注文受付メール(お客様宛)
  • 支払確認メール(お客様宛)
  • 発送メール(お客様宛)
  • レビュー依頼メール(お客様宛)
  • 新着レビューメール(管理者宛)
  • ニュースレター(お客様宛)

など、たくさん種類があります。
 

さくっとメール機能を実装できるようになっておくと必ず役に立つと思います
 
 

ABOUT ME
Sara
「わかりやすく・シンプル」をモットーに、スマホアプリ・ウェブアプリの作り方を紹介します。 独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています🙂
guest
9 Comments
古い順
新しい順 人気順
Inline Feedbacks
View all comments
Natsumi
Natsumi
8 months ago

初めまして!PHPのお問い合わせフォーム作り、とても勉強になっています!

コードを写経してローカル環境で実行したのですが、
メールが指定したメールアドレスに届かず苦戦しています。
もしよろしければアドバイスをお願いします!

  • 開発環境 (Mac / XAMPP 7.4.10-0)
  • 問題 ($toに設定したアドレスにお問い合わせ内容が送信されない)
  • 試したこと (お問い合わせ複数回送信、コード写経、全部コピペ、Postfixの設定、異なるアドレスを設定する)

もしかしたら、インストラクションの

ローカル環境でメール関数を使う場合、別に設定が必要になる場合があります。

初心者の方は、ローカル環境でなくウェブサーバー上でテストするのが簡単です。

が関係しているのではと睨んでいます。

よろしくお願いします!

Natsumi
Natsumi
8 months ago
Reply to  Sara

Saraさん、ご返信いただきありがとうございます!

「Postfixの起動」の部分を再度実行したところ、
「メールの送信テスト」とPHPお問い合わせフォーム
両方とも機能しました!

的確なご指摘ありがとうございました^^

追加で一つ質問なのですが、
現在知り合いの小さな会社のHPを製作しており、
お問い合わせフォームも設置したいと思っています。

インターネット上にサイトを置く時、セキュリティ面で
気をつけるべき点を教えていただけると嬉しいです。

よろしくお願いします!

Natsumi
Natsumi
8 months ago
Reply to  Sara

セキュリティ対策は奥が深いですね…!
まずは、メールアドレスの形式チェック、inputの字数制限の実装から始めてみようと思います!

色々と教えてくださりありがとうございました😊
これからも応援してます!

Natsumi
Natsumi
8 months ago
Reply to  Sara

わ!関連する情報も紹介してくださりありがとうございます!
今後もサイトで勉強させていただきます^^

Koko
Koko
7 months ago

はじめまして!
PHPのお問い合わせフォームづくりで苦戦しています・・・。

開発環境↓
Windows/VisualStadioCode
問題点↓
・設定アドレスにメールが届かない
・アラート表記が2つとも常に表示されている
・プレイスホルダーが表示されているはずのところにコードが表記されてしまう(<?php echo $name; ?>)
試したこと↓
・お問い合わせからの送信
・表示されてしまうコードを削除してみる
・コードを全部コピペ

ポートフォリオ用サイトのお問い合わせフォームなのですが、初心者なのでいろいろ躓いて問題だらけになってしまいました・・・
アドバイスいただけると幸いです。

9
0
この記事にコメントするx