【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入門】メールを送信する方法(mail/mb_send_mail)
更新日 : 2019年8月7日

③ 【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の具体的な使い方については、以下の記事で詳しく解説していますので、ご興味ある方はぜひ!

【PHP入門】POST送信、GET送信する方法
更新日 : 2019年8月7日

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

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

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

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

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

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

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

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

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

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

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

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

この目的とは、

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

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

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

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

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

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

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

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

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

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

    無料体験レッスンに申し込む

    まとめ

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

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

    LINEで送る
    Pocket

    「プログラミング、右も左もわからない…」という方にオススメ

    当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

    その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

    侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

    cta_under_bnr

    「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

    書いた人

    ノムラ

    ノムラ

    WEBエンジニアをやっています。
    プログラミング初心者にもわかりやすく解説ができるよう頑張ります。