質問編集履歴

12

コードを追加しました。

2021/07/08 12:24

投稿

suke1001
suke1001

スコア7

test CHANGED
File without changes
test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
  $pdo = new PDO(DSN, DB_USER, DB_PASS);
42
42
 
43
- $stmt = $pdo->prepare('SELECT * FROM members WHERE email=?');
43
+ $stmt = $db->prepare('SELECT * FROM members WHERE email=?');
44
44
 
45
45
  $stmt->execute([$_POST['email']]);
46
46
 

11

コードを追加しました。

2021/07/08 12:24

投稿

suke1001
suke1001

スコア7

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
 
11
-
11
+ login.php(ログインページ)
12
12
 
13
13
  ```php
14
14
 

10

コードを追加しました。

2021/07/08 10:56

投稿

suke1001
suke1001

スコア7

test CHANGED
File without changes
test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  // error_reporting(E_ALL & ~E_NOTICE);
18
18
 
19
- require_once("config.php");
19
+ require_once("dbconnect.php");
20
20
 
21
21
 
22
22
 
@@ -94,7 +94,7 @@
94
94
 
95
95
  <?php
96
96
 
97
- require("config.php");
97
+ require("dbconnect.php");
98
98
 
99
99
  session_start();
100
100
 
@@ -256,7 +256,7 @@
256
256
 
257
257
  <?php
258
258
 
259
- require("config.php");
259
+ require("dbconnect.php");
260
260
 
261
261
  session_start();
262
262
 

9

コードを追加しました。

2021/07/08 10:55

投稿

suke1001
suke1001

スコア7

test CHANGED
File without changes
test CHANGED
@@ -388,6 +388,30 @@
388
388
 
389
389
  ```
390
390
 
391
+ dbconnect.php(データベース接続ページ)
392
+
393
+ ```PHP
394
+
395
+ <?php
396
+
397
+
398
+
399
+ try {
400
+
401
+ $db = new PDO('mysql:dbname=myapp;host=db;charset=utf8mb4', 'myappuser', 'myapppass');
402
+
403
+ } catch (PDOException $e) {
404
+
405
+ echo "データベース接続エラー :".$e->getMessage();
406
+
407
+ }
408
+
409
+ ?>
410
+
411
+
412
+
413
+ ```
414
+
391
415
  ●エラーページです。
392
416
 
393
417
  ![エラーページです。](9636b27b6033dc1a90387b4432e3f6e8.png)

8

コードを追加しました。

2021/07/08 10:54

投稿

suke1001
suke1001

スコア7

test CHANGED
File without changes
test CHANGED
@@ -250,6 +250,144 @@
250
250
 
251
251
  ```
252
252
 
253
+ check.php(登録確認ページ)
254
+
255
+ ```PHP
256
+
257
+ <?php
258
+
259
+ require("config.php");
260
+
261
+ session_start();
262
+
263
+
264
+
265
+
266
+
267
+ if (!isset($_SESSION['join'])) {
268
+
269
+ header('Location: entry.php');
270
+
271
+ exit();
272
+
273
+ }
274
+
275
+
276
+
277
+ if (!empty($_POST['check'])) {
278
+
279
+ $hash = password_hash($_SESSION['join']['password'], PASSWORD_BCRYPT);
280
+
281
+
282
+
283
+ $stmt = $db->prepare("INSERT INTO members SET name=?, email=?, password=?");
284
+
285
+ $stmt->execute(array(
286
+
287
+ $_SESSION['join']['name'],
288
+
289
+ $_SESSION['join']['email'],
290
+
291
+ $hash
292
+
293
+ ));
294
+
295
+
296
+
297
+ unset($_SESSION['join']);
298
+
299
+ header('Location: thank.php');
300
+
301
+ exit();
302
+
303
+ }
304
+
305
+ ?>
306
+
307
+
308
+
309
+ <!DOCTYPE html>
310
+
311
+ <html lang="ja">
312
+
313
+ <head>
314
+
315
+ <meta charset="utf8mb4">
316
+
317
+ <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0">
318
+
319
+ <title>確認画面</title>
320
+
321
+ <link href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" rel="stylesheet">
322
+
323
+ <link rel="stylesheet" href="css/style.css">
324
+
325
+ </head>
326
+
327
+ <body>
328
+
329
+ <div class="content">
330
+
331
+ <form action="" method="POST">
332
+
333
+ <input type="hidden" name="check" value="checked">
334
+
335
+ <h1>入力情報の確認</h1>
336
+
337
+ <p>ご入力情報に変更が必要な場合は、下のボタンを押し、変更を行ってください。</p>
338
+
339
+ <p>ご登録情報は後から変更する事ができます。</p>
340
+
341
+ <?php if (!empty($error) && $error === "error"): ?>
342
+
343
+ <p class="error">会員登録に失敗しました。</p>
344
+
345
+ <?php endif ?>
346
+
347
+ <hr>
348
+
349
+
350
+
351
+ <div class="control">
352
+
353
+ <p>ニックネーム</p>
354
+
355
+ <p><span class="fas fa-angle-double-right"></span><span class="check-info"><?php echo htmlspecialchars($_SESSION['join']['name'], ENT_QUOTES); ?></span></p>
356
+
357
+ </div>
358
+
359
+
360
+
361
+ <div class="control">
362
+
363
+ <p>メールアドレス</p>
364
+
365
+ <p><span class="fas fa-angle-double-right"></span><span class="check-info"><?php echo htmlspecialchars($_SESSION['join']['email'], ENT_QUOTES); ?></span></p>
366
+
367
+ </div>
368
+
369
+
370
+
371
+ <br>
372
+
373
+ <a href="entry.php" class="back-btn">変更する</a>
374
+
375
+ <button type="submit" class="btn next-btn">登録する</button>
376
+
377
+ <div class="clear"></div>
378
+
379
+ </form>
380
+
381
+ </div>
382
+
383
+ </body>
384
+
385
+ </html>
386
+
387
+
388
+
389
+ ```
390
+
253
391
  ●エラーページです。
254
392
 
255
393
  ![エラーページです。](9636b27b6033dc1a90387b4432e3f6e8.png)

7

コードを追加しました。

2021/07/08 10:51

投稿

suke1001
suke1001

スコア7

test CHANGED
File without changes
test CHANGED
@@ -88,7 +88,9 @@
88
88
 
89
89
  ```
90
90
 
91
- entry.php(新規登録画面
91
+ entry.php(新規登録ページ
92
+
93
+ ```PHP
92
94
 
93
95
  <?php
94
96
 

6

コードを追加しました。

2021/07/08 10:50

投稿

suke1001
suke1001

スコア7

test CHANGED
File without changes
test CHANGED
@@ -88,7 +88,165 @@
88
88
 
89
89
  ```
90
90
 
91
-
91
+ entry.php(新規登録画面)
92
+
93
+ <?php
94
+
95
+ require("config.php");
96
+
97
+ session_start();
98
+
99
+
100
+
101
+ if (!empty($_POST)) {
102
+
103
+ if ($_POST['email'] === "") {
104
+
105
+ $error['email'] = "blank";
106
+
107
+ }
108
+
109
+ if ($_POST['password'] === "") {
110
+
111
+ $error['password'] ="blank";
112
+
113
+ }
114
+
115
+
116
+
117
+ if (!isset($error)) {
118
+
119
+ $member = $db->prepare('SELECT COUNT(*) as cnt FROM members WHERE email=?');
120
+
121
+ $member->execute(array(
122
+
123
+ $_POST['email']
124
+
125
+ ));
126
+
127
+ $record = $member->fetch();
128
+
129
+ if ($record['cnt'] > 0) {
130
+
131
+ $error['email'] = 'duplicate';
132
+
133
+ }
134
+
135
+ }
136
+
137
+
138
+
139
+ if (!isset($error)) {
140
+
141
+ $_SESSION['join'] = $_POST;
142
+
143
+ header('Location: check.php');
144
+
145
+ exit();
146
+
147
+ }
148
+
149
+ }
150
+
151
+ ?>
152
+
153
+
154
+
155
+ <!DOCTYPE html>
156
+
157
+ <html>
158
+
159
+ <div class="content">
160
+
161
+ <head>
162
+
163
+ <meta charset="utf8mb4">
164
+
165
+ <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0">
166
+
167
+ <title>アカウント作成</title>
168
+
169
+ <link rel="stylesheet" href="css/style.css">
170
+
171
+ </head>
172
+
173
+
174
+
175
+ <body>
176
+
177
+ <form action="" method="POST">
178
+
179
+ <h1>アカウント作成</h1>
180
+
181
+ <p>当サービスをご利用するために、次のフォームに必要事項をご記入ください。</p>
182
+
183
+ <br>
184
+
185
+
186
+
187
+ <div class="control">
188
+
189
+ <label for="name">ユーザー名</label>
190
+
191
+ <input id="name" type="text" name="name">
192
+
193
+ </div>
194
+
195
+
196
+
197
+ <div class="control">
198
+
199
+ <label for="email">メールアドレス<span class="required">必須</span></label>
200
+
201
+ <input id="email" type="email" name="email">
202
+
203
+ <?php if (!empty($error["email"]) && $error['email'] === 'blank'): ?>
204
+
205
+ <p class="error">※メールアドレスを入力してください</p>
206
+
207
+ <?php elseif (!empty($error["email"]) && $error['email'] === 'duplicate'): ?>
208
+
209
+ <p class="error">※このメールアドレスはすでに登録済みです</p>
210
+
211
+ <?php endif ?>
212
+
213
+ </div>
214
+
215
+
216
+
217
+ <div class="control">
218
+
219
+ <label for="password">パスワード<span class="required">必須</span></label>
220
+
221
+ <input id="password" type="password" name="password">
222
+
223
+ <?php if (!empty($error["password"]) && $error['password'] === 'blank'): ?>
224
+
225
+ <p class="error">※パスワードを入力して下さい</p>
226
+
227
+ <?php endif ?>
228
+
229
+ </div>
230
+
231
+
232
+
233
+ <div class="control">
234
+
235
+ <button type="submit" class="btn">確認する</button>
236
+
237
+ </div>
238
+
239
+ </form>
240
+
241
+ </body>
242
+
243
+ </div>
244
+
245
+ </html>
246
+
247
+
248
+
249
+ ```
92
250
 
93
251
  ●エラーページです。
94
252
 

5

2021/07/08 10:48

投稿

suke1001
suke1001

スコア7

test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,4 @@
1
- ```ここに言語を入力
2
-
3
- コード
4
-
5
- ```PHPを使って会員登録のページを作成している途中ですが、一通りできて会員登録の登録を済ませてログインするとエラーページが出てきます。フィルターの部分と指摘されていますが違うパターンも試しましたがうまく動作しませんでした。このコードはネットで検索したページのコードを参考にしました。そもそも、そのコード自体に不備があるのか、自分の設定に問題があるのかどちらか教えてください。
1
+ PHPを使って会員登録のページを作成している途中ですが、一通りできて会員登録の登録を済ませてログインするとエラーページが出てきます。フィルターの部分と指摘されていますが違うパターンも試しましたがうまく動作しませんでした。このコードはネットで検索したページのコードを参考にしました。そもそも、そのコード自体に不備があるのか、自分の設定に問題があるのかどちらか教えてください。
6
2
 
7
3
 
8
4
 

4

2021/07/08 00:34

投稿

suke1001
suke1001

スコア7

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,8 @@
1
+ ```ここに言語を入力
2
+
3
+ コード
4
+
1
- PHPを使って会員登録のページを作成している途中ですが、一通りできて会員登録の登録を済ませてログインするとエラーページが出てきます。フィルターの部分と指摘されていますが違うパターンも試しましたがうまく動作しませんでした。このコードはネットで検索したページのコードを参考にしました。そもそも、そのコード自体に不備があるのか、自分の設定に問題があるのかどちらか教えてください。
5
+ ```PHPを使って会員登録のページを作成している途中ですが、一通りできて会員登録の登録を済ませてログインするとエラーページが出てきます。フィルターの部分と指摘されていますが違うパターンも試しましたがうまく動作しませんでした。このコードはネットで検索したページのコードを参考にしました。そもそも、そのコード自体に不備があるのか、自分の設定に問題があるのかどちらか教えてください。
2
6
 
3
7
 
4
8
 
@@ -26,7 +30,7 @@
26
30
 
27
31
 
28
32
 
29
- if (!filter_var($_SESSION['email'], FILTER_VALIDATE_EMAIL)) {
33
+ if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
30
34
 
31
35
  echo '入力された値が不正です。';
32
36
 

3

コードの表示を変えました。

2021/07/08 00:30

投稿

suke1001
suke1001

スコア7

test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,4 @@
1
- ```ここに言語を入力
2
-
3
- コード
4
-
5
- ```PHPを使って会員登録のページを作成している途中ですが、一通りできて会員登録の登録を済ませてログインするとエラーページが出てきます。フィルターの部分と指摘されていますが違うパターンも試しましたがうまく動作しませんでした。このコードはネットで検索したページのコードを参考にしました。そもそも、そのコード自体に不備があるのか、自分の設定に問題があるのかどちらか教えてください。
1
+ PHPを使って会員登録のページを作成している途中ですが、一通りできて会員登録の登録を済ませてログインするとエラーページが出てきます。フィルターの部分と指摘されていますが違うパターンも試しましたがうまく動作しませんでした。このコードはネットで検索したページのコードを参考にしました。そもそも、そのコード自体に不備があるのか、自分の設定に問題があるのかどちらか教えてください。
6
2
 
7
3
 
8
4
 

2

コードの表示を変えました。

2021/07/07 22:12

投稿

suke1001
suke1001

スコア7

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- ●参考にしたコードです。
9
+ ●参考にしたサイトです。
10
10
 
11
11
  https://qiita.com/qwertyuiopngsdfg/items/597da67387723a5aedad
12
12
 

1

コードの表示を変えました。

2021/07/07 22:11

投稿

suke1001
suke1001

スコア7

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,8 @@
1
+ ```ここに言語を入力
2
+
3
+ コード
4
+
1
- PHPを使って会員登録のページを作成している途中ですが、一通りできて会員登録の登録を済ませてログインするとエラーページが出てきます。フィルターの部分と指摘されていますが違うパターンも試しましたがうまく動作しませんでした。このコードはネットで検索したページのコードを参考にしました。そもそも、そのコード自体に不備があるのか、自分の設定に問題があるのかどちらか教えてください。
5
+ ```PHPを使って会員登録のページを作成している途中ですが、一通りできて会員登録の登録を済ませてログインするとエラーページが出てきます。フィルターの部分と指摘されていますが違うパターンも試しましたがうまく動作しませんでした。このコードはネットで検索したページのコードを参考にしました。そもそも、そのコード自体に不備があるのか、自分の設定に問題があるのかどちらか教えてください。
2
6
 
3
7
 
4
8
 
@@ -10,11 +14,83 @@
10
14
 
11
15
 
12
16
 
13
- ●自分のコードです。
17
+ ```php
14
18
 
19
+ <?php
20
+
15
- ![自分のコードです。](769edb17fd6169808784cc894408fe5c.png)
21
+ // error_reporting(E_ALL & ~E_NOTICE);
22
+
23
+ require_once("config.php");
16
24
 
17
25
 
26
+
27
+ session_start();
28
+
29
+
30
+
31
+
32
+
33
+ if (!filter_var($_SESSION['email'], FILTER_VALIDATE_EMAIL)) {
34
+
35
+ echo '入力された値が不正です。';
36
+
37
+ return false;
38
+
39
+ }
40
+
41
+
42
+
43
+ try {
44
+
45
+ $pdo = new PDO(DSN, DB_USER, DB_PASS);
46
+
47
+ $stmt = $pdo->prepare('SELECT * FROM members WHERE email=?');
48
+
49
+ $stmt->execute([$_POST['email']]);
50
+
51
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
52
+
53
+ } catch (\Exception $e) {
54
+
55
+ echo $e->getMessage() . PHP_EOL;
56
+
57
+ }
58
+
59
+
60
+
61
+ if (!isset($row['email'])) {
62
+
63
+ echo ' メールアドレス又はパスワードが間違っています。';
64
+
65
+ return false;
66
+
67
+ }
68
+
69
+
70
+
71
+ if (password_verify($_POST['password'], $row['password'])) {
72
+
73
+ session_regenerate_id(true);
74
+
75
+ $_SESSION['EMAIL'] = $row['email'];
76
+
77
+ echo 'ログインしました。';
78
+
79
+ } else {
80
+
81
+ echo 'メールアドレス又はパスワードが間違っています。';
82
+
83
+ return false;
84
+
85
+ }
86
+
87
+
88
+
89
+
90
+
91
+ ?>
92
+
93
+ ```
18
94
 
19
95
 
20
96