回答編集履歴

1

追加の検証要望を記載

2019/09/01 06:19

投稿

thyda.eiqau
thyda.eiqau

スコア2982

test CHANGED
@@ -3,3 +3,163 @@
3
3
 
4
4
 
5
5
  余談ですが、あくまで提示用に簡潔なコードにされていて、実際には適切に処理されていると信じたいですが、 `$_POST` で渡された値をそのまま、その後の処理に使用するのはセキュリティ上かなり危険ですので、適切にバリデーションやエスケープを実施してください。
6
+
7
+
8
+
9
+ ----
10
+
11
+ 追記: Sep 1, 2019 2:51pm
12
+
13
+ > 内容に入力した言葉しか反映してくれません
14
+
15
+
16
+
17
+ に対するコメントですが、コードブロックを使いたいのでこちらに記載します。
18
+
19
+ メール送信の前に var_dumpやprint_rやechoを使って、$_POSTや$nameや$emailや$tellや$selectや$memoや$msgに何が入っているかを確認してください。
20
+
21
+ といっても通じなさそうなのでコードを記載します。
22
+
23
+
24
+
25
+ ```php
26
+
27
+ <?php
28
+
29
+
30
+
31
+ function safety_string_with_posted_key(string $key): string {
32
+
33
+ $val = $_POST[$key] ?: '(empty)';
34
+
35
+ if(!is_string($val)) {
36
+
37
+ http_response_code(400);
38
+
39
+ die();
40
+
41
+ }
42
+
43
+ return htmlspecialchars($val);
44
+
45
+ }
46
+
47
+
48
+
49
+ mb_language('Japanese');
50
+
51
+ mb_internal_encoding('UTF-8');
52
+
53
+
54
+
55
+ $name = safety_string_with_posted_key('name') . 'からメッセージ';
56
+
57
+ $email = safety_string_with_posted_key('email');
58
+
59
+ $tell = safety_string_with_posted_key('tell');
60
+
61
+ $select = safety_string_with_posted_key('select');
62
+
63
+ $memo = safety_string_with_posted_key('memo');
64
+
65
+
66
+
67
+ $msg = <<<EOMESSAGE
68
+
69
+
70
+
71
+ メールアドレス
72
+
73
+ {$email}
74
+
75
+
76
+
77
+ 電話番号
78
+
79
+ {$tell}
80
+
81
+
82
+
83
+ お問い合わせ
84
+
85
+ {$select}
86
+
87
+
88
+
89
+ 内容
90
+
91
+ {$memo}
92
+
93
+
94
+
95
+ EOMESSAGE;
96
+
97
+
98
+
99
+ $msg = trim($msg);
100
+
101
+
102
+
103
+ echo '<p>' . implode('</p><p>', [
104
+
105
+ print_r($_POST, true),
106
+
107
+ print_r($name, true),
108
+
109
+ print_r($email, true),
110
+
111
+ print_r($tell, true),
112
+
113
+ print_r($select, true),
114
+
115
+ print_r($memo, true),
116
+
117
+ print_r($msg, true),
118
+
119
+ ]) . '</p>';
120
+
121
+
122
+
123
+ // DEBUG: Exit for debug
124
+
125
+ exit();
126
+
127
+
128
+
129
+ $result = 'メールの送信に失敗しました';
130
+
131
+ if(mb_send_mail(__YOUR_EMAIL_ADDRESS__, $name, $msg)){
132
+
133
+ $result = 'メールを送信しました';
134
+
135
+ }
136
+
137
+
138
+
139
+ ?><!doctype html>
140
+
141
+ <html lang="ja">
142
+
143
+ <head>
144
+
145
+ <meta charset="UTF-8">
146
+
147
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
148
+
149
+ <meta http-equiv="X-UA-Compatible" content="ie=edge">
150
+
151
+ <title></title>
152
+
153
+ </head>
154
+
155
+ <body>
156
+
157
+ <p><?php echo $result; ?></p>
158
+
159
+ </body>
160
+
161
+ </html>
162
+
163
+
164
+
165
+ ```