-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmailform.php
More file actions
64 lines (60 loc) · 2.51 KB
/
mailform.php
File metadata and controls
64 lines (60 loc) · 2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
# h()関数☆レシピ221☆(安全にブラウザで値を表示したい)を読み込みます☆レシピ041☆(他のファイルを取り込んで利用したい)。
require_once './h.php';
# クリックジャッキング対策☆レシピ290☆(クリックジャッキングとは?)をします。
header('X-FRAME-OPTIONS: SAMEORIGIN');
# セッションを開始します。
session_start();
# 固定トークン☆レシピ289☆(CSRFとは?)を生成してセッション変数に保存します。フォームに
# 隠しフィールドで出力します。
if (! isset($_SESSION['token'])) {
$_SESSION['token'] = base64_encode(openssl_random_pseudo_bytes(32));
}
$token = $_SESSION['token'];
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>メール送信フォーム</title>
</head>
<body>
<div id="mailbox">
<h1>メール送信フォーム</h1>
<?php
# エラーがあったら表示します。
if (isset($_SESSION['error'])) {
foreach ($_SESSION['error'] as $value) {
echo ' <span style="color:red;">' . h($value) . '</span><br>' . "\n";
}
}
# 三項演算子☆レシピ025☆(「条件式 ? 式1 : 式2」って何ですか?)を使用して、セッションに保存されたデータ
# がある場合、変数に代入します。
$name = isset($_SESSION['name']) ? $_SESSION['name'] : '';
$email = isset($_SESSION['email']) ? $_SESSION['email'] : '';
$comment = isset($_SESSION['comment']) ? $_SESSION['comment'] : '';
?>
<p>*印は必須入力項目です。タグは無効化します。</p>
<form action="mailform_confirm.php" method="post">
<dl>
<dt><label for="name">お名前(*):</label></dt>
<dd><input type="text" name="name" id="name"
value="<?php echo h($name); ?>" maxlength="100" required></dd>
</dl>
<dl>
<dt><label for="email">メールアドレス(*):</label></dt>
<dd><input type="email" name="email" id="email"
value="<?php echo h($email); ?>" maxlength="256" required></dd>
</dl>
<dl>
<dt><label for="comment">コメント(*)(500文字以内):</label></dt>
<dd><textarea rows="6" cols="30" id="comment" name="comment"
maxlength="500" required><?php echo h($comment); ?></textarea></dd>
</dl>
<input type="hidden" name="token" value="<?php echo h($token); ?>">
<input type="submit" name="submit" value="入力内容チェック">
</form>
</div>
</body>
</html>