4
14

More than 3 years have passed since last update.

PHPでお問い合わせフォームを作る

Last updated at Posted at 2019-12-18

PHPでお問い合わせフォームを作ってみよう

最近、新人君たちにプログラミングを教える機会が多くなってきました。
教えていく中で「自分の教え方って大丈夫なんだろうか?」と最近不安になっている次第。
という事で簡単なお問い合わせフォームを作る事で、人への教え方を再考するために「お問い合わせフォーム」を題材にちょっとずつ難しい事を実装していきます。
そして、最終的には実戦で使えるようなフォームを作れるようになります。

フォームの全体の流れ

  1. 入力画面
  2. 確認画面
  3. 完了画面

てな感じで

じゃあ、もうちょっと細かくみてみましょう

入力画面

うん、これがないと始まらないですね。
今回はお決まりの以下の入力項目にしてみます
項目1 お名前
項目2 メールアドレス
項目3 お問い合わせ内容

お、お、ぉぅ 最低限の設定やね。。今後拡張していく予定なので我慢してください。。。

確認画面

そう、ここで入力した内容を表示して「送っていいですか?」って確認させます。

完了画面

要するに「ありがとうございました」ページです
ここでメール送信とかデータベースに接続とかいろいろあるけど、とりあえずはメール送信しときましょう

細かいとこ

とりあえずPHPで動く事を目標にするのでCSS等は後回しにします

入力画面

取り敢えず最低限のこのhtmlで

index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>phpでフォーム送信</title>
</head>
<body>
<form action="./confirm.php" method="post">
    <div id="contents">
        <div id="name">
          お名前 <input type="text" name="name">
        </div>
        <div id="mail">
          メールアドレス <input type="text" name="mail">
        </div>
        <div id="toiawase">
          お問い合わせ内容 <textarea name="toiawase"></textarea>
        </div>
        </br>
        </br>
        <input type="submit" value="確認">
    </div>
</form>
</body>
</html>

味気の無い画面ですね。
name="name" のテキストボックスが名前を入れるところです
name="mail" がメールアドレス、テキストエリアに問い合わせ内容ですね
そして formタグで 確認ボタンを押した後のリクエスト先が指定されています
action=./confirm.php" です。この記述で、ボタンを押したらconfirm.phpにリクエストを投げます。
そして method="post の記述でリクエスト時はPOSTでデータを投げる、と指定しています。

確認画面

入力画面で確認ボタンをクリックすると form タグの指定通り confirm.php にリクエストが投げられます。

confirm.php
<?php

    $name = $_POST['name'];
    $mail = $_POST['mail'];
    $toiawase = $_POST['toiawase'];

echo "
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<title>Insert title here</title>
</head>
<body>
お名前:$name
</br>
メールアドレス:$mail
</br>
お問い合わせ内容
</br>
$toiawase
</br>
</br>
<form action='complete.php' method='post'>
<input type='hidden' name='name' value='$name'>
<input type='hidden' name='mail' value='$mail'>
<input type='hidden' name='toiawase' value='$toiawase'>
<input type='button' onclick='history.back()' value='戻る''>
<input type='submit' value='確認'>
</form>
</body>
</html>";

はい、必要最低限の記述です。
index.html で入力された内容が表示されると思います。
ここ(confirm.php)で、本当はやっておかなきゃいけない事、やっておいた方が良い事、やらない方が良い事を書いておきます

やっておかなきゃいけない事
postで投げられたデータのチェック(nullチェック、文字数チェック、その他もろもろチェック)

やっておいた方が良い事
セッションへの値保存、テンプレートの使用

やらない方が良い事
hidden タグの使用

これらのやり方、対応方法は後々の記事で書いていきます。
ここまでで データの入力、データの送信、データの受信、データの表示まで出来ました。
この画面で確認がOKであれば 次へボタン をクリックして完了画面に移ります

確認画面

complete.php
<?php

$name = $_POST['name'];
$mail = $_POST['mail'];

$toiawase = $_POST['toiawase'];

$mailTO = $mail;
$mailHeader = "From: from@from.com";

$mailSubject = "お問い合わせありがとうございます";
$mailBody = $name . "様 お問い合わせありがとうございます";
$mailBody .= "¥n";
$mailBody .= "ご返信まで~~~~";

mail($mailTO, $mailSubject, $mailBody, $mailHeader);

echo "
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<title>Insert title here</title>
</head>
<body>
お問い合わせありがとうございます。
</body>
</html>
";

はい、これでデータ(名前、メールアドレス、問い合わせ内容)を入力し、データを送信
confirm.php で受け取ったデータの表示、データの送信
complete.php でデータ受け取り、メール送信、完了画面の表示
ここまで出来ました。

最後に

今回書いた内容は本当に必要最低限の流れですが、次回からこのフォームに肉付けしていこうと思います。

4
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
14