【PHP入門】メールフォームを作成する方法をわかりやすく解説!

こんにちは!エンジニアのノムラです。

突然ですが、HTMLに少しPHPを書くことでメールフォームが簡単に作成できることを知っていますか?この記事では、

  • 【基礎】フォームとは?
  • 【基礎】メールフォームの作り方
  • 【応用】GETとPOSTどっちを使うべき?
  • 【応用】セキュリティ対策をしよう

といった流れで解説していきたいと思います。WEBサービスで、入力フォームの作成は必ず必要になると思うので、しっかりマスターしましょう!

目次

フォームとは?

wikipediaでは以下のように記載されております。

入力フォームは、Webプログラミングの技術の1つ。
クライアントが情報を入力・選択し、Webサーバ等のフォームを処理するエージェントへ提出するための機構である。

引用元:Wikipedia

つまり、ユーザが入力した情報をWEBサーバ経由でサイト管理人に送ることができる仕組みですね。フォームを使って以下のような機能を作ることができます。

  • アンケート調査
  • お問い合わせ
  • 出欠確認
  • etc…

PHPでフォームを作る場合は、基本的に以下の流れで作成します。

フォーム作成の流れ

画像:フォーム作成の流れ

フォームを作るというざっくりとした認識から、上記のように作業を明確化することで作りやすくなりますね。では、具体的な方法について以下でご説明いたします!

メールフォームを作成してみよう

フォームとは何なのかがわかったところで、実際にフォームの作成を行ってみましょう。今回はメールフォームを作ってみたいと思います。WEBサイトのお問い合わせなどでみたことがあるかと思います。

① 【HTML】フォームの部品を用意する

実際にお問い合わせフォームを作成していきたいと思います。お問い合わせフォームを作成するにあたり、まずはHTMLでテキストボックスやボタンなどの部品を用意します。項目には、【名前】、【メールアドレス】、【お問合せ内容】をサンプルとして用意しました。

以下をコピーし、メモ帳などに張り付けてregist.htmlという名前で保存してください。

【HTML】

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>sample</title>
    </head>
    <body>
        <form action="confirmation.php" method="post">
            名前:<br />
            <input type="text" name="name" size="50" value="" /><br />

            メールアドレス:<br />
            <input type="text" name="mail" size="50" value="" /><br />

            問合せ内容:<br />
            <textarea name="inquiry" cols="50" rows="5"></textarea><br />

            <br />

            <input type="submit" value="送信" />
        </form>
    </body>
</html>
スクリーンショット 2018-06-22 14.58.43

画像:画面イメージ

② 【PHP】ボタンクリック時にフォームを送信する

次に、HTMLの送信ボタンを押したときの処理を作ります。今回は、送信ボタンクリック時に問い合わせ内容を確認する画面を用意し、確認画面でOKボタンを押すことでメールが送信されるサンプルにしたいと思います。

確認画面の作り方

HTMLではテキストボックスをそれぞれ以下のname属性で用意しています。

  • 名前     :name
  • メールアドレス:mail
  • 問合せ内容  :inquiry

確認画面では、上記の三つの値を表示するソースを書く必要があります。以下をコピーし、メモ帳に張り付けてconfirmation.phpという名前で保存してください。

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>sample</title>
</head>

<body>

<h2>問合せ内容</h2>    

<form action="mailto.php" method="post">

<table border="1">
<tr>
<td>名前</td>
<td><?php echo $_POST["name"]; ?></td>
</tr>
<tr>
<td>メールアドレス</td>
<td><?php echo $_POST["mail"]; ?></td>
</tr>
<tr>
<td>問い合わせ内容</td>
<td><?php echo $_POST["inquiry"]; ?></td>
</tr>
</table>

<input type="submit" value="送信" />
</form>

</body>
    
</html>
スクリーンショット 2018-06-22 14.53.45

画像:画面イメージ

メール送信処理について

上記送信ボタンクリック後は、 mailto.phpの処理が実行されます。そのためメール送信用のソースを、mailto.phpに書くことで、メールを送信することができます。フォームからメールを送信する具体的な方法については、以下の記事で詳しく解説しています!

ぜひ参考にしていただき、メール送信をしてみましょう!

③ 【PHP】完了画面を表示する

最後に、処理が完了したことを伝えるための完了画面を表示したいと思います。

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>sample</title>
</head>

<body>

<h2>メール送信完了</h2>    

<p class="message">
お問い合わせありがとうございます。1営業日以内にご返信させていただきます。<br>
自動返信メールをお送りしておりますのでご確認ください。<br>
1時間たっても届かない場合はお手数ですがこちらからご連絡ください。
</p>
</body>
    
</html>

GETとPOSTどっちを使えばいいの?

いままで、フォームの作り方に関して説明させていただきましたが、内部的な処理の部分に関して補足させていただきます。

HTMLで何気なく <form action=”contact.php” method=”post”> と記載しましたが、データの受信、送信方法は2パターンあります。

  • GET :データをURL経由で送受信
  • POST:データをURL以外で送受信

GETの場合、画面間で使用する変数 (名前、メールアドレス、問い合わせ内容など) がURLに表示されてしまうため、個人情報を扱う場合はpostにすることが基本となっております。

GET/POSTの具体的な使い方については、以下の記事で詳しく解説していますので、ご興味ある方はぜひ!

セキュリティ対策をしよう

フォームの作成方法についてご紹介していきましたが、フォームを作る際はセキュリティに関しても意識する必要があります。

例えば今回の例では、テキストボックスに自由に文字を入力することができるため、悪意のあるユーザが攻撃型文字列を入力すると、個人情報などを抜き取られてしまう可能性があります。

これを防ぐためにも、セキュリティに関しての知識を理解した上でフォームを作成したほうが安全かと思いますので、ご興味ある方は以下を参考にしてみてくださいね!

参考:http://www.hp-stylelink.com/news/2013/09/20130913.php

最短でPHPの仕事を獲得する方法

独学で学習をしているけど、仕事獲得のイメージまではできていない人って結構いるかと思います。

PHPを学習して、ある程度できるようになったら仕事も取れるだろう

このように考えている人もいると思います。ですが、どのレベルまでできれば仕事獲得ができるか把握していなければ、転職も難しくなるし仕事獲得も苦戦します。自分が満足するレベルと、企業側が求めるレベルに乖離があると余計仕事獲得は困難になってしまいます。

ですが実は、自分の実力をしっかり提示できる成果物があれば、仕事獲得はそんなに難しいことではありません。その成果物となるのがポートフォリオです。

でもどんなポートフォリオを作ったらいいのかわからない

このように思う人もいますよね。どんなポートフォリオを作るかは目的によっても変わってきます。

この目的とは、

  • Webサイトを制作している企業に転職したい
  • WordPressの編集をしている企業に転職したい
  • フリーランスとして仕事獲得をしたい

  • など様々です。その目的によってどんなポートフォリオを作るかを決めると良いでしょう。

    作りたいものがあるならば、その作りたいものを形にするのもいいでしょう。

    目的がないんだけど、ポートフォリオは作れるの?

    このように目的が明確ではない人もいるでしょう。

    実際に作ることは可能ですが、ポートフォリオを作るのが目的ではなく、その先の目的を達成するためにポートフォリオを作るので、目的は明確にしておいたほうがいいでしょう。

    目的と言われても漠然としていて考えられない

    このように感じる人は、弊社の「無料カウンセリング」を受けてみましょう。この無料カウンセリングでは、なぜPHPを学ぶのかその目的をヒアリングして、どんな働き方を目指したいのか、そのためにはどんな学習プランで進めていくべきなのかなどの提案をしています。

    目的をヒアリングすることで、あなたに最適な学習プランが分かるので、最速でエンジニアを目指せるイメージが湧きます。その他にもポートフォリオに関することや学習に関する悩みを相談することもできます。

    手軽にしかもオンラインでも受けられるので、ぜひ一度学ぶ目的を明確にしてみましょう。

    無料カウンセリングに申し込む

    まとめ

    今回は、メールフォームをPHPで作成する方法についてご紹介させていただきました。ホームページを持つと、それが営業の顔になり、情報発信をする入り口となります。そのため、興味を持ってくれた人から連絡をもらいやすい仕組みを用意しておくことは非常に重要です。

    ぜひ、メールフォーム作成にチャレンジしてみてくださいね!

    この記事を書いた人

    【プロフィール】
    DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
    累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
    【専門分野】
    IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

    目次