teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

1

2021/11/14 20:51

投稿

takasima20
takasima20

スコア7468

answer CHANGED
@@ -1,3 +1,95 @@
1
1
  $cs を設定してるとこが無いスね。
2
2
 
3
- あと、$_SESSION['cs'] も設定してないです。
3
+ あと、$_SESSION['cs'] も設定してないです。
4
+ --- 追記 ---
5
+ 解決したようですね。
6
+ ひとつのページでいくつかの画面を提供する場合、画面ごとに処理を分けると管理しやすいですよ。
7
+ ```php
8
+ <?php
9
+ session_start();
10
+
11
+ if (isset($_POST['back'])) {
12
+ $mode = 'input';
13
+ } else if (isset($_POST['confirm'])) {
14
+ $errmessage = check();
15
+ if (count($errmessage) > 0) {
16
+ $mode = 'input';
17
+ } else {
18
+ $mode = 'confirm';
19
+ }
20
+ } else if (isset($_POST['send'])) {
21
+ done();
22
+ $mode = 'send';
23
+ } else {
24
+ clear();
25
+ }
26
+
27
+ function check() {
28
+ $errmessage = [];
29
+
30
+ if (empty($_POST['fullname'])) {
31
+ $errmessage[] = "名前を入力してください";
32
+ } else if ( mb_strlen($_POST['fullname']) > 100 ) {
33
+ $errmessage[] = "名前は100文字以内にしてください";
34
+ } else {
35
+ $_SESSION['fullname'] = htmlspecialchars($_POST['fullname'], ENT_QUOTES);
36
+ }
37
+
38
+ if (empty($_POST['email'])) {
39
+ $errmessage[] = "Eメールを入力してください。";
40
+ } else if ( strlen($_POST['email']) > 200 ) {
41
+ $errmessage[] = "Eメールは200文字以内にしてください。";
42
+ } else if ( !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ) {
43
+ $errmessage[] = "メールアドレスが不正です。";
44
+ } else {
45
+ $_SESSION['email'] = htmlspecialchars($_POST['email'], ENT_QUOTES);
46
+ }
47
+
48
+ if (empty($_POST['tel'])) {
49
+ $errmessage[] = "電話番号を入力してください。";
50
+ } else if (strlen($_POST['tel']) > 12) {
51
+ $errmessage[] = "電話番号は12桁以内にしてください。。";
52
+ } else {
53
+ $_SESSION['tel'] = htmlspecialchars($_POST['tel'], ENT_QUOTES);
54
+ }
55
+
56
+ if (empty($_POST['cs'])) {
57
+ $errmessage[] = "お問い合わせ項目を選択してください。";
58
+ } else {
59
+ $_SESSION['cs'] = htmlspecialchars($_POST['cs'], ENT_QUOTES);
60
+ }
61
+
62
+ if (empty($_POST['message'])){
63
+ $errmessage[] = "お問い合わせ内容を入力してください。";
64
+ } else if (mb_strlen($_POST['message']) > 1000 ) {
65
+ $errmessage[] = "お問い合わせ内容は1000文字以内にしてください";
66
+ } else {
67
+ $_SESSION['message'] = htmlspecialchars($_POST['message'], ENT_QUOTES);
68
+ }
69
+
70
+ return $errmessage;
71
+ }
72
+
73
+ function done() {
74
+ $message = "お問い合わせを受け付けました。 \r\n"
75
+ . "名前: " . $_SESSION['fullname'] . "\r\n"
76
+ . "email: " . $_SESSION['email'] . "\r\n"
77
+ . "tel: " . $_SESSION['tel'] . "\r\n"
78
+ . "お問い合わせ項目: " . $_SESSION['cs'] . "\r\n"
79
+ . "お問い合わせ内容:\r\n"
80
+ . preg_replace("/\r\n|\r|\n/", "\r\n", $_SESSION['message']);
81
+ mail($_SESSION['email'],'お問い合わせありがとうございます。',$message);
82
+ mail('aaaaa@gmail.com','お問い合わせありがとうございます。',$message);
83
+ clear();
84
+ }
85
+
86
+ function clear() {
87
+ unset($_SESSION['fullname']);
88
+ unset($_SESSION['email']);
89
+ unset($_SESSION['tel']);
90
+ unset($_SESSION['cs']);
91
+ unset($_SESSION['message']);
92
+ }
93
+ ?>
94
+ ```
95
+ あと、セッションに保存する際 htmlspecialchars() は通さない方がいい気がします。