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

質問編集履歴

6

追記

2021/02/28 10:09

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -118,7 +118,103 @@
118
118
  </body>
119
119
  </html>
120
120
  ```
121
+ confirm.php
122
+ ```
123
+ <?php
124
+ ini_set('display_errors', "On");
121
125
 
126
+ if (empty($_SERVER["HTTP_REFERER"])) {
127
+ header('Location: ./contact.php');
128
+ exit;
129
+ }
130
+
131
+ session_start();
132
+ require_once('../common/function.php');
133
+
134
+
135
+ if(isset($_POST['name'])) {
136
+ $_SESSION['name'] = $_POST['name'];
137
+ }
138
+
139
+ if(isset($_POST['kana'])) {
140
+ $_SESSION['kana'] = $_POST['kana'];
141
+ }
142
+
143
+ if(isset($_POST['tel'])) {
144
+ $_SESSION['tel'] = $_POST['tel'];
145
+ }
146
+
147
+ if(isset($_POST['email'])) {
148
+ $_SESSION['email'] = $_POST['email'];
149
+ }
150
+
151
+ if(isset($_POST['contact'])) {
152
+ $_SESSION['contact'] = $_POST['contact'];
153
+ }
154
+
155
+ ?>
156
+
157
+ <!DOCTYPE html>
158
+ <html lang="en">
159
+ <head>
160
+ <meta charset="UTF-8">
161
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
162
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
163
+ <link rel="stylesheet" href="../style/confirm.css">
164
+ <link rel="stylesheet" href="../style/footer.css">
165
+ <link rel="stylesheet" href="../style/header.css">
166
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
167
+ <script src="../public/js/header.js"></script>
168
+ <script src="../public/js/header2.js"></script>
169
+
170
+ <title>CAFE</title>
171
+ </head>
172
+ <body>
173
+ <?php include("../common/header.php"); ?>
174
+ <div class="confirm-wrapper">
175
+ <div class="container">
176
+ <div class="title">
177
+ <h2>お問い合わせ</h2>
178
+ </div>
179
+ <div class="form-contents">
180
+ <p class="text">
181
+ 下記の内容をご確認の上送信ボタンを押してください<br>
182
+ 内容を訂正する場合は戻るボタンを押してください。
183
+ </p>
184
+ </div>
185
+ <form action="complete.php" method="POST">
186
+ <div class="form">
187
+ <div class="mb-3">
188
+ <div class="name">氏名</div>
189
+ <p><?php echo h($_SESSION['name']); ?></p>
190
+ </div>
191
+ <div class="mb-3">
192
+ <div class="name">フリガナ</div>
193
+ <p><?php echo h($_SESSION['kana']); ?></p>
194
+ </div>
195
+ <div class="mb-3">
196
+ <div class="name">電話番号</div>
197
+ <p><?php echo h($_SESSION['tel']); ?></p>
198
+ </div>
199
+ <div class="mb-3">
200
+ <div class="name">メールアドレス</div>
201
+ <p><?php echo h($_SESSION['email']); ?></p>
202
+ </div>
203
+ <div class="mb-3">
204
+ <div class="name">お問い合わせ内容</div>
205
+ <p><?php echo nl2br(h($_SESSION['contact'])); ?></p>
206
+ </div>
207
+ <button type="submit" class="btn">送信</button>
208
+ <a href="contact.php" class="return-btn">戻る</a>
209
+ </div>
210
+ </form>
211
+ </div>
212
+ </div>
213
+ <?php include("../common/footer.php"); ?>
214
+ </body>
215
+ </html>
216
+ ```
217
+
122
218
  バリデーション
123
219
  validation.php
124
220
  ```
@@ -187,51 +283,41 @@
187
283
 
188
284
 
189
285
  // 名前の空欄チェック
190
- if(empty($_POST['name']) || mb_strlen($_POST['name']) > 10) {
286
+ if(empty($name) || mb_strlen($name) > 10) {
191
287
  $errors['name'] = "名前は必須です。10文字以内で入力してください。";
192
288
  }
193
289
  // フリガナの空欄チェック
194
- if(empty($_POST['kana']) || mb_strlen($_POST['kana']) > 10) {
290
+ if(empty($kana) || mb_strlen($kana) > 10) {
195
291
  $errors['kana'] = "フリガナは必須です。フリガナは10文字以内で入力してください";
196
292
  }
197
293
 
198
294
  // 電話番号のチェック
199
- if(!isset($_POST['tel']) || !preg_match("/^[0-9]+$/", $_POST['tel'])) {
295
+ if(!isset($tel) || !preg_match("/^[0-9]+$/", $tel)) {
200
296
  $errors['tel'] = "電話番号は0-9までの数字を入力してください";
201
297
  }
202
298
 
203
299
  // 正しいEmailの形式化どうか
204
- if(!isset($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
300
+ if(!isset($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
205
301
  $errors['email'] = "正しいメールアドレスを指定してください";
206
302
  }
207
303
 
208
304
  // お問い合わせ内容の空欄チェック
209
- if(empty($_POST['contact'])) {
305
+ if(empty($contact)) {
210
306
  $errors['contact'] = "お問い合わせ内容は必須です";
211
307
  }
212
308
  }
213
-
214
309
  if(empty($errors)) {
215
- if(isset($_POST['name'])) {
216
- $_SESSION['name'] = $_POST['name'];
310
+ $_SESSION['name'] = $name;
217
- }
218
-
219
- if(isset($_POST['kana'])) {
220
- $_SESSION['kana'] = $_POST['kana'];
311
+ $_SESSION['kana'] = $kana;
221
- }
222
-
223
- if(isset($_POST['tel'])) {
224
- $_SESSION['tel'] = $_POST['tel'];
312
+ $_SESSION['tel'] = $tel;
225
- }
226
-
227
- if(isset($_POST['email'])) {
228
- $_SESSION['email'] = $_POST['email'];
313
+ $_SESSION['email'] = $email;
229
- }
230
-
231
- if(isset($_POST['contact'])) {
232
- $_SESSION['contact'] = $_POST['contact'];
314
+ $_SESSION['contact'] = $contact;
233
- }
234
315
  header('Location: ./confirm.php');
235
316
  }
236
317
  ?>
237
- ```
318
+ ```
319
+
320
+ 【追記】
321
+ データを登録し、再度お問い合わせフォームで登録しようとすると、confirm.phpにリダイレクトされ、全て空の状態になってしまっている。
322
+ ![イメージ説明](016f9f566a9a05bf45882428a539430b.png)
323
+ ※本当ならば、氏名などのデータが入っている状態

5

追記

2021/02/28 10:09

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -172,10 +172,20 @@
172
172
  <?php
173
173
 
174
174
  $errors = [];
175
-
175
+ $name = "";
176
+ $kana = "";
177
+ $tel = "";
178
+ $email = "";
179
+ $contact = "";
176
180
  if($_SERVER['REQUEST_METHOD'] === 'POST'){
177
181
  //以下バリデーション
182
+ $name = filter_input(INPUT_POST,'name');
183
+ $kana = filter_input(INPUT_POST,'kana');
184
+ $tel = filter_input(INPUT_POST,'tel');
185
+ $email = filter_input(INPUT_POST,'email');
186
+ $contact = filter_input(INPUT_POST,'contact');
178
187
 
188
+
179
189
  // 名前の空欄チェック
180
190
  if(empty($_POST['name']) || mb_strlen($_POST['name']) > 10) {
181
191
  $errors['name'] = "名前は必須です。10文字以内で入力してください。";
@@ -201,12 +211,26 @@
201
211
  }
202
212
  }
203
213
 
204
- if($errors === 0) {
214
+ if(empty($errors)) {
215
+ if(isset($_POST['name'])) {
205
- $_SESSION['name'] = $_POST['name'];
216
+ $_SESSION['name'] = $_POST['name'];
217
+ }
218
+
219
+ if(isset($_POST['kana'])) {
206
- $_SESSION['kana'] = $_POST['kana'];
220
+ $_SESSION['kana'] = $_POST['kana'];
221
+ }
222
+
223
+ if(isset($_POST['tel'])) {
207
- $_SESSION['tel'] = $_POST['tel'];
224
+ $_SESSION['tel'] = $_POST['tel'];
225
+ }
226
+
227
+ if(isset($_POST['email'])) {
208
- $_SESSION['email'] = $_POST['email'];
228
+ $_SESSION['email'] = $_POST['email'];
229
+ }
230
+
231
+ if(isset($_POST['contact'])) {
209
- $_SESSION['contact'] = $_POST['contact'];
232
+ $_SESSION['contact'] = $_POST['contact'];
233
+ }
210
234
  header('Location: ./confirm.php');
211
235
  }
212
236
  ?>

4

追記

2021/02/28 09:32

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -32,7 +32,7 @@
32
32
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
33
33
  <script src="../public/js/header.js"></script>
34
34
  <script src="../public/js/header2.js"></script>
35
- <script src="../public/js/val.js"></script>
35
+ <!-- <script src="../public/js/val.js"></script> -->
36
36
  <title>CAFE</title>
37
37
  </head>
38
38
  <body>
@@ -50,7 +50,7 @@
50
50
  なお、ご連絡までに、お時間頂く場合もございますので予めご了承ください。<br>
51
51
  <label class="kome">*</label>は必須項目になります。
52
52
  </p>
53
- <form action="confirm.php" method="POST">
53
+ <form action="" method="POST">
54
54
  <div class="mb-3">
55
55
  <label>氏名</label><label class="kome">*</label><br>
56
56
  <?php if(isset($errors['name'])): ?>

3

追記

2021/02/28 08:13

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -171,8 +171,9 @@
171
171
  ```
172
172
  <?php
173
173
 
174
- $errors = [];
174
+ $errors = [];
175
+
175
- if($_SERVER['REQUEST_METHOD'] === 'POST'){
176
+ if($_SERVER['REQUEST_METHOD'] === 'POST'){
176
177
  //以下バリデーション
177
178
 
178
179
  // 名前の空欄チェック
@@ -198,14 +199,15 @@
198
199
  if(empty($_POST['contact'])) {
199
200
  $errors['contact'] = "お問い合わせ内容は必須です";
200
201
  }
202
+ }
203
+
201
- } else {
204
+ if($errors === 0) {
202
- $_SESSION['name'] = $_POST['name'];
205
+ $_SESSION['name'] = $_POST['name'];
203
- $_SESSION['kana'] = $_POST['kana'];
206
+ $_SESSION['kana'] = $_POST['kana'];
204
- $_SESSION['tel'] = $_POST['tel'];
207
+ $_SESSION['tel'] = $_POST['tel'];
205
- $_SESSION['email'] = $_POST['email'];
208
+ $_SESSION['email'] = $_POST['email'];
206
- $_SESSION['contact'] = $_POST['contact'];
209
+ $_SESSION['contact'] = $_POST['contact'];
207
210
  header('Location: ./confirm.php');
208
- exit;
209
211
  }
210
212
  ?>
211
213
  ```

2

追記

2021/02/28 08:12

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -166,4 +166,46 @@
166
166
  notice:indexなので、validation.phpの19行目にあるようにissetをつけたり外したりした。
167
167
  つけると、バリデーションメッセージが表示されなくなる。
168
168
 
169
- どのようにコードを書けば、名前やフリガナのようにnoticeエラーも表示されずにバリデーションメッセージが表示されるのでしょうか?
169
+ どのようにコードを書けば、名前やフリガナのようにnoticeエラーも表示されずにバリデーションメッセージが表示されるのでしょうか?
170
+
171
+ ```
172
+ <?php
173
+
174
+ $errors = [];
175
+ if($_SERVER['REQUEST_METHOD'] === 'POST'){
176
+ //以下バリデーション
177
+
178
+ // 名前の空欄チェック
179
+ if(empty($_POST['name']) || mb_strlen($_POST['name']) > 10) {
180
+ $errors['name'] = "名前は必須です。10文字以内で入力してください。";
181
+ }
182
+ // フリガナの空欄チェック
183
+ if(empty($_POST['kana']) || mb_strlen($_POST['kana']) > 10) {
184
+ $errors['kana'] = "フリガナは必須です。フリガナは10文字以内で入力してください";
185
+ }
186
+
187
+ // 電話番号のチェック
188
+ if(!isset($_POST['tel']) || !preg_match("/^[0-9]+$/", $_POST['tel'])) {
189
+ $errors['tel'] = "電話番号は0-9までの数字を入力してください";
190
+ }
191
+
192
+ // 正しいEmailの形式化どうか
193
+ if(!isset($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
194
+ $errors['email'] = "正しいメールアドレスを指定してください";
195
+ }
196
+
197
+ // お問い合わせ内容の空欄チェック
198
+ if(empty($_POST['contact'])) {
199
+ $errors['contact'] = "お問い合わせ内容は必須です";
200
+ }
201
+ } else {
202
+ $_SESSION['name'] = $_POST['name'];
203
+ $_SESSION['kana'] = $_POST['kana'];
204
+ $_SESSION['tel'] = $_POST['tel'];
205
+ $_SESSION['email'] = $_POST['email'];
206
+ $_SESSION['contact'] = $_POST['contact'];
207
+ header('Location: ./confirm.php');
208
+ exit;
209
+ }
210
+ ?>
211
+ ```

1

追記

2021/02/28 07:07

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -9,6 +9,47 @@
9
9
  お問い合わせフォーム
10
10
  contact.php
11
11
  ```
12
+ <?php
13
+ ini_set('display_errors', "On");
14
+
15
+ session_start();
16
+ require '../common/header.php';
17
+ require_once('validation.php');
18
+ require_once('../common/database.php');
19
+ require_once('../common/function.php');
20
+ $contactData = getDatabaseSelect();
21
+ ?>
22
+
23
+ <!DOCTYPE html>
24
+ <html lang="en">
25
+ <head>
26
+ <meta charset="UTF-8">
27
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
28
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
29
+ <link rel="stylesheet" href="../style/contact.css">
30
+ <link rel="stylesheet" href="../style/header.css">
31
+ <link rel="stylesheet" href="../style/footer.css">
32
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
33
+ <script src="../public/js/header.js"></script>
34
+ <script src="../public/js/header2.js"></script>
35
+ <script src="../public/js/val.js"></script>
36
+ <title>CAFE</title>
37
+ </head>
38
+ <body>
39
+ <div class="contact-wrapper">
40
+ <div class="container">
41
+ <div class="top-title">
42
+ <h2>お問い合わせ</h2>
43
+ </div>
44
+ <div class="form-contents">
45
+ <div class="f-title">
46
+ <h3>下記の項目をご記入の上送信ボタンを押してください</h3>
47
+ </div>
48
+ <p class="text">
49
+ 送信頂いた件につきましては、当社より折り返しご連絡差し上げます。<br>
50
+ なお、ご連絡までに、お時間頂く場合もございますので予めご了承ください。<br>
51
+ <label class="kome">*</label>は必須項目になります。
52
+ </p>
12
53
  <form action="confirm.php" method="POST">
13
54
  <div class="mb-3">
14
55
  <label>氏名</label><label class="kome">*</label><br>
@@ -50,6 +91,32 @@
50
91
  <input type="hidden" name="csrf_token" value="<?php echo setToken(); ?>">
51
92
  <button type="submit" class="btn" name="btn_confirm">送信</button>
52
93
  </form>
94
+ </div>
95
+ </div>
96
+ </div>
97
+ <table>
98
+ <tr>
99
+ <th>氏名</th>
100
+ <th>フリガナ</th>
101
+ <th>電話番号</th>
102
+ <th>メールアドレス</th>
103
+ <th>お問い合わせ内容</th>
104
+ </tr>
105
+ <?php foreach($contactData as $col): ?>
106
+ <tr>
107
+ <td><?php echo h($col['name']) ?></td>
108
+ <td><?php echo h($col['kana']) ?></td>
109
+ <td><?php echo h($col['tel']) ?></td>
110
+ <td><?php echo h($col['email']) ?></td>
111
+ <td><?php echo nl2br(h($col['body'])) ?></td>
112
+ <td><a href="edit.php?id=<?php echo h($col['id']); ?>">編集</a></td>
113
+ <td><a class="delete-btn" href="delete.php?id=<?php echo h($col['id']); ?>">削除</a></td>
114
+ </tr>
115
+ <?php endforeach; ?>
116
+ </table>
117
+ <?php include("../common/footer.php"); ?>
118
+ </body>
119
+ </html>
53
120
  ```
54
121
 
55
122
  バリデーション