2019.5.10
HTMLとPHPのみでお問い合わせフォームを作る方法[コピペok]

HTMLとPHPでお問い合わせフォームを実装したので、実装方法をメモをします
以下の流れで書いていきます。
- フォームの項目をhtmlで記述する(index.html)
- 確認画面を作る(confirmation.php)
- 完了画面を作る(mail.php)
- 想定されるエラーに対する解決策
formをhtmlで記述する(index.html)
index.htmlを作成し以下を記述します
See the Pen
qGObWY by Yuta (@nose_free)
on CodePen.
<action=”confirmation.php” method=”post”>の記述で確認画面(confirmation.php)に各項目に入力されたデータをPOSTで送信しています
確認画面を作る(confirmation.php)
confirmaion.phpを作成しbody内に以下を記述します
- <form action="mail.php" method="post">
- <h2>確認画面</h2>
- <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["subject"]; ?></td>
- </tr>
- <tr>
- <td>問い合わせ内容</td>
- <td><?php echo $_POST["content"]; ?></td>
- </tr>
- </table>
- <input type="submit" value="送信"/>
- <a href="index.html">戻る</a>
- </form>
- <!-- POSTの中身をSESSIONへ受け渡す -->
- <?php
- session_start() ;
- $_SESSION["name"] = $_POST["name"];
- $_SESSION["mail"] = $_POST["mail"];
- $_SESSION["subject"] = $_POST["subject"];
- $_SESSION["content"] = $_POST["content"];
- ?>
下部でSESSIONにPOST内の変数を代入しています。この記述がないと次のmail.phpでPOST内変数がNULLになることがあります。
完了画面を作る(mail.php)
confirmaion.phpを作成しbody内に以下を記述します
- <?php
- mb_language("Japanese");
- mb_internal_encoding("UTF-8");
- session_start();
- $to = /*宛先のメールアドレス*/;
- $subject = htmlspecialchars($_SESSION['subject']);
- $name = htmlspecialchars($_SESSION['name']);
- $mail = htmlspecialchars($_SESSION['mail']);
- $content = htmlspecialchars($_SESSION['content']);
- $header = "From:$mail";
- $body = "お名前"."\n"."$name"."\n\n"
- ."メールアドレス"."\n"."$mail"."\n\n"
- ."題名"."\n"."$subject"."\n\n"
- ."お問い合わせ内容"."\n"."$content"."\n\n";
- ?>
- <?php if((mb_send_mail($to,$subject,$body,$header))) : ?>
- <p >メールの送信が完了しました</p>
- <?php else : ?>
- <p>メールの送信が失敗しました</p>
- <?php endif ; ?>
- <a href="index.html">戻る</a>
想定されるエラーに対する解決策
メールが届かない
SMTPサーバーにより送信したメールが迷惑メールとして判定されブロックされている可能性があります。その場合はphp.iniのsmtp_portの値を587とすることで解決できるかと思います