【PHP】 メールフォームの作り方①
PHPでメールフォームを作ります。まずはフォームに書かれたテキストを受け取るところまでやります。
フォームを作る。
フォームは以前やったので、説明等は割愛します。【PHP】入力フォームと送受信 - PCゲーマーのWebデザイン備忘録
仕様としては、check.php にフォームの情報を送ります。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>お問い合わせメールフォーム</title> <style> h1{ text-indent: 0.5em;} tabel{ border: none;} td{ padding: 10px;} td span{ font-size: 0.8em;} td.ff{ background: #68CFC3;} td.bf{ background: #C8EFEA;} td.bf.right{ text-align: right;} </style> </head> <body> <h1>お問い合わせメールフォーム</h1> <form method="post" action="check.php"> <table> <tr><td class="ff"><label for="name">お名前: <span>※必須 30文字</span></label></td><td class="bf"><input type="text" id="name" name="name" placeholder="例:猫山猫太郎" value=""></td></tr> <tr><td class="ff"><label for="email">email: <span>※必須 50文字</span></label></td><td class="bf"><input type="text" id="email" name="email" placeholder="例:sample@sample.com" value=""></td></tr> <tr><td class="ff" ><label for="message">お問い合わせ: <span>※必須 128文字</span></label></td><td class="bf"><textarea name="message" id="message" cols="40" rows="10" placeholder="例:御社商品の資料請求いたします。"></textarea></td></tr> <tr><td class="ff"> </td><td class="bf right"><input type="submit" name="submit" value="確認"></td></tr> </table> </form> </body> </html>
フォームの情報を受け取る
check.php にフォームから受け取った情報を表示します。
受ける取る場合の PHP も前回勉強をしているので、説明は割愛します。
<?php //var_dump($_POST); $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>お問い合わせメールフォーム確認</title> </head> <body> <h1>お問い合わせメールフォーム確認</h1> <table> <tr><td class="ff">お名前:</td><td class="bf"><?php print htmlspecialchars($name,ENT_QUOTES,"UTF-8"); ?></td></tr> <tr><td class="ff">email:</td><td class="bf"><?php print htmlspecialchars($email,ENT_QUOTES,"UTF-8"); ?></td></tr> <tr><td class="ff">お問い合わせ</td><td class="bf"><?php print htmlspecialchars($message,ENT_QUOTES,"UTF-8"); ?></td></tr> </table> </body> </html>
body にのみ htmlspecialchars を使っている理由は、htmlspecialchars のかけ忘れを防ぐのと、html外で受け取ったデータをそのまま残しておくことが必要なためです。
これで、スクリプトによる攻撃から簡単ですが防ぐことが出来きます。