回答編集履歴

1

1

2021/11/14 20:51

投稿

takasima20
takasima20

スコア7460

test CHANGED
@@ -3,3 +3,187 @@
3
3
 
4
4
 
5
5
  あと、$_SESSION['cs'] も設定してないです。
6
+
7
+ --- 追記 ---
8
+
9
+ 解決したようですね。
10
+
11
+ ひとつのページでいくつかの画面を提供する場合、画面ごとに処理を分けると管理しやすいですよ。
12
+
13
+ ```php
14
+
15
+ <?php
16
+
17
+ session_start();
18
+
19
+
20
+
21
+ if (isset($_POST['back'])) {
22
+
23
+ $mode = 'input';
24
+
25
+ } else if (isset($_POST['confirm'])) {
26
+
27
+ $errmessage = check();
28
+
29
+ if (count($errmessage) > 0) {
30
+
31
+ $mode = 'input';
32
+
33
+ } else {
34
+
35
+ $mode = 'confirm';
36
+
37
+ }
38
+
39
+ } else if (isset($_POST['send'])) {
40
+
41
+ done();
42
+
43
+ $mode = 'send';
44
+
45
+ } else {
46
+
47
+ clear();
48
+
49
+ }
50
+
51
+
52
+
53
+ function check() {
54
+
55
+ $errmessage = [];
56
+
57
+
58
+
59
+ if (empty($_POST['fullname'])) {
60
+
61
+ $errmessage[] = "名前を入力してください";
62
+
63
+ } else if ( mb_strlen($_POST['fullname']) > 100 ) {
64
+
65
+ $errmessage[] = "名前は100文字以内にしてください";
66
+
67
+ } else {
68
+
69
+ $_SESSION['fullname'] = htmlspecialchars($_POST['fullname'], ENT_QUOTES);
70
+
71
+ }
72
+
73
+
74
+
75
+ if (empty($_POST['email'])) {
76
+
77
+ $errmessage[] = "Eメールを入力してください。";
78
+
79
+ } else if ( strlen($_POST['email']) > 200 ) {
80
+
81
+ $errmessage[] = "Eメールは200文字以内にしてください。";
82
+
83
+ } else if ( !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ) {
84
+
85
+ $errmessage[] = "メールアドレスが不正です。";
86
+
87
+ } else {
88
+
89
+ $_SESSION['email'] = htmlspecialchars($_POST['email'], ENT_QUOTES);
90
+
91
+ }
92
+
93
+
94
+
95
+ if (empty($_POST['tel'])) {
96
+
97
+ $errmessage[] = "電話番号を入力してください。";
98
+
99
+ } else if (strlen($_POST['tel']) > 12) {
100
+
101
+ $errmessage[] = "電話番号は12桁以内にしてください。。";
102
+
103
+ } else {
104
+
105
+ $_SESSION['tel'] = htmlspecialchars($_POST['tel'], ENT_QUOTES);
106
+
107
+ }
108
+
109
+
110
+
111
+ if (empty($_POST['cs'])) {
112
+
113
+ $errmessage[] = "お問い合わせ項目を選択してください。";
114
+
115
+ } else {
116
+
117
+ $_SESSION['cs'] = htmlspecialchars($_POST['cs'], ENT_QUOTES);
118
+
119
+ }
120
+
121
+
122
+
123
+ if (empty($_POST['message'])){
124
+
125
+ $errmessage[] = "お問い合わせ内容を入力してください。";
126
+
127
+ } else if (mb_strlen($_POST['message']) > 1000 ) {
128
+
129
+ $errmessage[] = "お問い合わせ内容は1000文字以内にしてください";
130
+
131
+ } else {
132
+
133
+ $_SESSION['message'] = htmlspecialchars($_POST['message'], ENT_QUOTES);
134
+
135
+ }
136
+
137
+
138
+
139
+ return $errmessage;
140
+
141
+ }
142
+
143
+
144
+
145
+ function done() {
146
+
147
+ $message = "お問い合わせを受け付けました。 \r\n"
148
+
149
+ . "名前: " . $_SESSION['fullname'] . "\r\n"
150
+
151
+ . "email: " . $_SESSION['email'] . "\r\n"
152
+
153
+ . "tel: " . $_SESSION['tel'] . "\r\n"
154
+
155
+ . "お問い合わせ項目: " . $_SESSION['cs'] . "\r\n"
156
+
157
+ . "お問い合わせ内容:\r\n"
158
+
159
+ . preg_replace("/\r\n|\r|\n/", "\r\n", $_SESSION['message']);
160
+
161
+ mail($_SESSION['email'],'お問い合わせありがとうございます。',$message);
162
+
163
+ mail('aaaaa@gmail.com','お問い合わせありがとうございます。',$message);
164
+
165
+ clear();
166
+
167
+ }
168
+
169
+
170
+
171
+ function clear() {
172
+
173
+ unset($_SESSION['fullname']);
174
+
175
+ unset($_SESSION['email']);
176
+
177
+ unset($_SESSION['tel']);
178
+
179
+ unset($_SESSION['cs']);
180
+
181
+ unset($_SESSION['message']);
182
+
183
+ }
184
+
185
+ ?>
186
+
187
+ ```
188
+
189
+ あと、セッションに保存する際 htmlspecialchars() は通さない方がいい気がします。