PCゲーマーのWebデザイン備忘録

PCゲーマーのWebデザインの勉強と備忘録。Webサイト制作系の職業訓練を受けてます。

【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">お名前:&nbsp;&nbsp;<span>※必須&nbsp;&nbsp;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:&nbsp;&nbsp;<span>※必須&nbsp;&nbsp;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">お問い合わせ:&nbsp;&nbsp;<span>※必須&nbsp;&nbsp;128文字</span></label></td><td class="bf"><textarea name="message" id="message" cols="40" rows="10" placeholder="例:御社商品の資料請求いたします。"></textarea></td></tr>
<tr><td class="ff">&nbsp;</td><td class="bf right"><input type="submit" name="submit" value="確認"></td></tr>
</table>
</form>

</body>
</html>

f:id:game-web-design:20141208115653p:plain

フォームの情報を受け取る

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外で受け取ったデータをそのまま残しておくことが必要なためです。

これで、スクリプトによる攻撃から簡単ですが防ぐことが出来きます。