メールを送る(2)
例
もうちょっと複雑な住所登録フォームメールの例です。
実際にはメールは送られませんので,安心してお試しください。
ソース
このファイル mail2.html
は単なるHTMLファイルです。上の「例」のところには次のように書き込んであります。
<form method="post" action="send.php"> <p>メール(必須):<input name="email" type="email" size="40" required></p> <p>住所 (必須):<input name="address" size="40" required></p> <p>氏名 (必須):<input name="name" size="40" required></p> <p>備考(オプション):<br> <textarea name="memo" rows="4" cols="60"></textarea></p> <p> <input type="submit" value="送る"> <input type="reset" value="クリア"> </p> </form>
一方,form の action で指定している send.php
は(だいたい)次のようになっています。一応 input
には required
を指定していますが,念のため入力をチェックしています。
<?php echo "<p>メール: ", htmlspecialchars($_POST['email']), "</p>\n"; echo "<p>住所: ", htmlspecialchars($_POST['address']), "</p>\n"; echo "<p>氏名: ", htmlspecialchars($_POST['name']), "</p>\n"; echo "<p>備考:</p>\n<pre>\n", htmlspecialchars($_POST['memo']), "\n</pre>\n"; $machigai = 0; if ($_POST['email'] == '') { echo "<p>メールアドレスがありません。</p>\n"; $machigai++; } if ($_POST['address'] == '') { echo "<p>住所がありません。</p>\n"; $machigai++; } if ($_POST['name'] == '') { echo "<p>氏名がありません。</p>\n"; $machigai++; } if ($machigai == 0) { // メールを送る部分。「メールを送る(1)」を参考にしてください。 echo "<p>受け付けました。</p>\r\n"; } else { echo "<p>$machigai 個のエラーがあります。</p>\n"; echo "<p>ブラウザの[戻る]ボタンを押して戻り,やりなおしてください。</p>\n"; } ?>
改良点
次のように placeholder
に「必須」と書く方法もあります:
<p>メール:<input name="email" type="email" size="40" required placeholder="必須"></p>
メール:
上の例では
echo "<p>備考:</p>\n<pre>\n", htmlspecialchars($_POST['memo']), "\n</pre>\n";
としていますが,改行を入れないで長い備考を書き込まれると横スクロールが発生してしまいます。これを避けるには
echo "<p>備考:<br>\n", str_replace(array("\r\n", "\n", "\r"), '<br>', htmlspecialchars($_POST['memo'])), "</p>\n";
のように改行を <br>
で置き換えるだけにするほうがよさそうです。