フォームまとめ


エラーチェックの無い場合

《input.php

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>メールフォーム</title>
<style>
section {
	width: 500px;
	margin: auto;
	text-align: center;
}
table {
	text-align: left;
}
td {
	padding: 3px;
}
</style>
</head>
<body>
<section>
<h1>入力画面</h1>
<p>必要事項を入力して「確認する」ボタンをクリックしてください。</p>
<form method="POST" action="check.php">
<table border="0">
<tr>
<td>お名前</td>
<td><input type="text" name="uname" size="50"></td>
</tr>
<tr>
<td>メールアドレス</td>
<td><input type="text" name="email" size="50"></td>
</tr>
<tr>
<td>メッセージ</td>
<td>
<textarea rows="5" cols="45" name="message"></textarea>
</td>
</tr>
</table>
<input type="submit" name="sub1" value="確認する">
</form>
</section>
</body>
</html>


《chech.php

<?php
// フォームデータが空の場合は処理終了
if (empty($_POST)) {
    echo "処理終了";
    exit;
}

// セッションの開始
session_start();
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>メールフォーム</title>
<style>
section {
	width: 500px;
	margin: auto;
	text-align: center;
}
table {
	text-align: left;
}
td {
	padding: 3px;
}
</style>
</head>
<body>
<section>
<h1>確認画面</h1>
<p>内容を確認してください。</p>
<?php
// 入力値のチェック
if (empty($_POST["uname"])) {
    echo "お名前を入力してください。";
    exit;
}

if (empty($_POST["email"])) {
    echo "メールアドレスを入力してください。";
    exit;
}

if (empty($_POST["message"])) {
    echo "メッセージを入力してください。";
    exit;
}

// 入力値の取得・加工
$uname = htmlspecialchars($_POST["uname"], ENT_QUOTES, "UTF-8");
$email = htmlspecialchars($_POST["email"], ENT_QUOTES, "UTF-8");
$message = htmlspecialchars($_POST["message"], ENT_QUOTES, "UTF-8");

$_SESSION["uname"] = $uname;
$_SESSION["email"] = $email;
$_SESSION["message"] = $message;
?>
<form method="POST" action="submit.php">
<table border="0">
<tr>
<td>お名前</td>
<td width="300"><?php echo $uname; ?></td>
</tr>
<tr>
<td>メールアドレス</td>
<td width="300"><?php echo $email; ?></td>
</tr>
<tr>
<td>メッセージ</td>
<td width="300"><?php echo nl2br($message); ?></td>
</tr>
<tr>
<td align="right" colspan="2">
<input type="submit" name="sub1" value="送信する">
</td>
</tr>
</table>
<!-- hiddenフィールドは不要 -->
</form>
</section>
</body>
</html>

《submit.php

<?php
// フォームデータが空の場合は処理終了
if (empty($_POST)) {
    echo "処理終了";
    exit;
}

// セッションの開始
session_start();
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>メールフォーム</title>
<style>
section {
	width: 500px;
	margin: auto;
	text-align: center;
}
table {
	text-align: left;
}
td {
	padding: 3px;
}
</style>
</head>
<body>
<section>
<h1>完了画面</h1>
<?php
// 入力値の取得・加工
$uname = htmlspecialchars($_SESSION["uname"], ENT_QUOTES, "UTF-8");
$email = htmlspecialchars($_SESSION["email"], ENT_QUOTES, "UTF-8");
$message = htmlspecialchars($_SESSION["message"], ENT_QUOTES, "UTF-8");

// メール本文の組み立て
mb_language("ja");
mb_internal_encoding("UTF-8");

$subject = "お問い合せを受け付けました。";
$to = "webtrafelica@gmail.com, {$email}";
$title = "【メールフォームより】";
$body =  <<<EOM
--------------------------------------------------
【Webサイトからのメール】

お名前:{$uname}
メールアドレス:{$email}
メッセージ:{$message}
--------------------------------------------------
EOM;


// メール送信の実行
$rc = mb_send_mail($to, $title, $body);
if (!$rc) {
    exit;
} else {
    $_SESSION = NULL;
}
?>
<!-- 処理結果を表示 -->
<p>以下の内容を受けたまわりました。</p>
<table border="0">
<tr>
<td>お名前</td>
<td width="300"><?php echo $uname; ?></td>
</tr>
<tr>
<td>メールアドレス</td>
<td width="300"><?php echo $email; ?></td>
</tr>
<tr>
<td>メッセージ</td>
<td width="300"><?php echo nl2br($message); ?></td>
</tr>
</table>
</section>
</body>
</html>