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

質問編集履歴

12

コードを追加しました。

2021/07/08 12:24

投稿

suke1001
suke1001

スコア7

title CHANGED
File without changes
body CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
  try {
21
21
  $pdo = new PDO(DSN, DB_USER, DB_PASS);
22
- $stmt = $pdo->prepare('SELECT * FROM members WHERE email=?');
22
+ $stmt = $db->prepare('SELECT * FROM members WHERE email=?');
23
23
  $stmt->execute([$_POST['email']]);
24
24
  $row = $stmt->fetch(PDO::FETCH_ASSOC);
25
25
  } catch (\Exception $e) {

11

コードを追加しました。

2021/07/08 12:24

投稿

suke1001
suke1001

スコア7

title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,7 @@
3
3
  ●参考にしたサイトです。
4
4
  https://qiita.com/qwertyuiopngsdfg/items/597da67387723a5aedad
5
5
 
6
-
6
+ login.php(ログインページ)
7
7
  ```php
8
8
  <?php
9
9
  // error_reporting(E_ALL & ~E_NOTICE);

10

コードを追加しました。

2021/07/08 10:56

投稿

suke1001
suke1001

スコア7

title CHANGED
File without changes
body CHANGED
@@ -7,7 +7,7 @@
7
7
  ```php
8
8
  <?php
9
9
  // error_reporting(E_ALL & ~E_NOTICE);
10
- require_once("config.php");
10
+ require_once("dbconnect.php");
11
11
 
12
12
  session_start();
13
13
 
@@ -46,7 +46,7 @@
46
46
  entry.php(新規登録ページ)
47
47
  ```PHP
48
48
  <?php
49
- require("config.php");
49
+ require("dbconnect.php");
50
50
  session_start();
51
51
 
52
52
  if (!empty($_POST)) {
@@ -127,7 +127,7 @@
127
127
  check.php(登録確認ページ)
128
128
  ```PHP
129
129
  <?php
130
- require("config.php");
130
+ require("dbconnect.php");
131
131
  session_start();
132
132
 
133
133
 

9

コードを追加しました。

2021/07/08 10:55

投稿

suke1001
suke1001

スコア7

title CHANGED
File without changes
body CHANGED
@@ -193,5 +193,17 @@
193
193
  </html>
194
194
 
195
195
  ```
196
+ dbconnect.php(データベース接続ページ)
197
+ ```PHP
198
+ <?php
199
+
200
+ try {
201
+ $db = new PDO('mysql:dbname=myapp;host=db;charset=utf8mb4', 'myappuser', 'myapppass');
202
+ } catch (PDOException $e) {
203
+ echo "データベース接続エラー :".$e->getMessage();
204
+ }
205
+ ?>
206
+
207
+ ```
196
208
  ●エラーページです。
197
209
  ![エラーページです。](9636b27b6033dc1a90387b4432e3f6e8.png)

8

コードを追加しました。

2021/07/08 10:54

投稿

suke1001
suke1001

スコア7

title CHANGED
File without changes
body CHANGED
@@ -124,5 +124,74 @@
124
124
  </html>
125
125
 
126
126
  ```
127
+ check.php(登録確認ページ)
128
+ ```PHP
129
+ <?php
130
+ require("config.php");
131
+ session_start();
132
+
133
+
134
+ if (!isset($_SESSION['join'])) {
135
+ header('Location: entry.php');
136
+ exit();
137
+ }
138
+
139
+ if (!empty($_POST['check'])) {
140
+ $hash = password_hash($_SESSION['join']['password'], PASSWORD_BCRYPT);
141
+
142
+ $stmt = $db->prepare("INSERT INTO members SET name=?, email=?, password=?");
143
+ $stmt->execute(array(
144
+ $_SESSION['join']['name'],
145
+ $_SESSION['join']['email'],
146
+ $hash
147
+ ));
148
+
149
+ unset($_SESSION['join']);
150
+ header('Location: thank.php');
151
+ exit();
152
+ }
153
+ ?>
154
+
155
+ <!DOCTYPE html>
156
+ <html lang="ja">
157
+ <head>
158
+ <meta charset="utf8mb4">
159
+ <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0">
160
+ <title>確認画面</title>
161
+ <link href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" rel="stylesheet">
162
+ <link rel="stylesheet" href="css/style.css">
163
+ </head>
164
+ <body>
165
+ <div class="content">
166
+ <form action="" method="POST">
167
+ <input type="hidden" name="check" value="checked">
168
+ <h1>入力情報の確認</h1>
169
+ <p>ご入力情報に変更が必要な場合は、下のボタンを押し、変更を行ってください。</p>
170
+ <p>ご登録情報は後から変更する事ができます。</p>
171
+ <?php if (!empty($error) && $error === "error"): ?>
172
+ <p class="error">会員登録に失敗しました。</p>
173
+ <?php endif ?>
174
+ <hr>
175
+
176
+ <div class="control">
177
+ <p>ニックネーム</p>
178
+ <p><span class="fas fa-angle-double-right"></span><span class="check-info"><?php echo htmlspecialchars($_SESSION['join']['name'], ENT_QUOTES); ?></span></p>
179
+ </div>
180
+
181
+ <div class="control">
182
+ <p>メールアドレス</p>
183
+ <p><span class="fas fa-angle-double-right"></span><span class="check-info"><?php echo htmlspecialchars($_SESSION['join']['email'], ENT_QUOTES); ?></span></p>
184
+ </div>
185
+
186
+ <br>
187
+ <a href="entry.php" class="back-btn">変更する</a>
188
+ <button type="submit" class="btn next-btn">登録する</button>
189
+ <div class="clear"></div>
190
+ </form>
191
+ </div>
192
+ </body>
193
+ </html>
194
+
195
+ ```
127
196
  ●エラーページです。
128
197
  ![エラーページです。](9636b27b6033dc1a90387b4432e3f6e8.png)

7

コードを追加しました。

2021/07/08 10:51

投稿

suke1001
suke1001

スコア7

title CHANGED
File without changes
body CHANGED
@@ -43,7 +43,8 @@
43
43
 
44
44
  ?>
45
45
  ```
46
- entry.php(新規登録画面
46
+ entry.php(新規登録ページ
47
+ ```PHP
47
48
  <?php
48
49
  require("config.php");
49
50
  session_start();

6

コードを追加しました。

2021/07/08 10:50

投稿

suke1001
suke1001

スコア7

title CHANGED
File without changes
body CHANGED
@@ -43,6 +43,85 @@
43
43
 
44
44
  ?>
45
45
  ```
46
+ entry.php(新規登録画面)
47
+ <?php
48
+ require("config.php");
49
+ session_start();
46
50
 
51
+ if (!empty($_POST)) {
52
+ if ($_POST['email'] === "") {
53
+ $error['email'] = "blank";
54
+ }
55
+ if ($_POST['password'] === "") {
56
+ $error['password'] ="blank";
57
+ }
58
+
59
+ if (!isset($error)) {
60
+ $member = $db->prepare('SELECT COUNT(*) as cnt FROM members WHERE email=?');
61
+ $member->execute(array(
62
+ $_POST['email']
63
+ ));
64
+ $record = $member->fetch();
65
+ if ($record['cnt'] > 0) {
66
+ $error['email'] = 'duplicate';
67
+ }
68
+ }
69
+
70
+ if (!isset($error)) {
71
+ $_SESSION['join'] = $_POST;
72
+ header('Location: check.php');
73
+ exit();
74
+ }
75
+ }
76
+ ?>
77
+
78
+ <!DOCTYPE html>
79
+ <html>
80
+ <div class="content">
81
+ <head>
82
+ <meta charset="utf8mb4">
83
+ <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0">
84
+ <title>アカウント作成</title>
85
+ <link rel="stylesheet" href="css/style.css">
86
+ </head>
87
+
88
+ <body>
89
+ <form action="" method="POST">
90
+ <h1>アカウント作成</h1>
91
+ <p>当サービスをご利用するために、次のフォームに必要事項をご記入ください。</p>
92
+ <br>
93
+
94
+ <div class="control">
95
+ <label for="name">ユーザー名</label>
96
+ <input id="name" type="text" name="name">
97
+ </div>
98
+
99
+ <div class="control">
100
+ <label for="email">メールアドレス<span class="required">必須</span></label>
101
+ <input id="email" type="email" name="email">
102
+ <?php if (!empty($error["email"]) && $error['email'] === 'blank'): ?>
103
+ <p class="error">※メールアドレスを入力してください</p>
104
+ <?php elseif (!empty($error["email"]) && $error['email'] === 'duplicate'): ?>
105
+ <p class="error">※このメールアドレスはすでに登録済みです</p>
106
+ <?php endif ?>
107
+ </div>
108
+
109
+ <div class="control">
110
+ <label for="password">パスワード<span class="required">必須</span></label>
111
+ <input id="password" type="password" name="password">
112
+ <?php if (!empty($error["password"]) && $error['password'] === 'blank'): ?>
113
+ <p class="error">※パスワードを入力して下さい</p>
114
+ <?php endif ?>
115
+ </div>
116
+
117
+ <div class="control">
118
+ <button type="submit" class="btn">確認する</button>
119
+ </div>
120
+ </form>
121
+ </body>
122
+ </div>
123
+ </html>
124
+
125
+ ```
47
126
  ●エラーページです。
48
127
  ![エラーページです。](9636b27b6033dc1a90387b4432e3f6e8.png)

5

2021/07/08 10:48

投稿

suke1001
suke1001

スコア7

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

4

2021/07/08 00:34

投稿

suke1001
suke1001

スコア7

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,6 @@
1
+ ```ここに言語を入力
2
+ コード
1
- PHPを使って会員登録のページを作成している途中ですが、一通りできて会員登録の登録を済ませてログインするとエラーページが出てきます。フィルターの部分と指摘されていますが違うパターンも試しましたがうまく動作しませんでした。このコードはネットで検索したページのコードを参考にしました。そもそも、そのコード自体に不備があるのか、自分の設定に問題があるのかどちらか教えてください。
3
+ ```PHPを使って会員登録のページを作成している途中ですが、一通りできて会員登録の登録を済ませてログインするとエラーページが出てきます。フィルターの部分と指摘されていますが違うパターンも試しましたがうまく動作しませんでした。このコードはネットで検索したページのコードを参考にしました。そもそも、そのコード自体に不備があるのか、自分の設定に問題があるのかどちらか教えてください。
2
4
 
3
5
  ●参考にしたサイトです。
4
6
  https://qiita.com/qwertyuiopngsdfg/items/597da67387723a5aedad
@@ -12,7 +14,7 @@
12
14
  session_start();
13
15
 
14
16
 
15
- if (!filter_var($_SESSION['email'], FILTER_VALIDATE_EMAIL)) {
17
+ if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
16
18
  echo '入力された値が不正です。';
17
19
  return false;
18
20
  }

3

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

2021/07/08 00:30

投稿

suke1001
suke1001

スコア7

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

2

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

2021/07/07 22:12

投稿

suke1001
suke1001

スコア7

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

1

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

2021/07/07 22:11

投稿

suke1001
suke1001

スコア7

title CHANGED
File without changes
body CHANGED
@@ -1,12 +1,50 @@
1
+ ```ここに言語を入力
2
+ コード
1
- PHPを使って会員登録のページを作成している途中ですが、一通りできて会員登録の登録を済ませてログインするとエラーページが出てきます。フィルターの部分と指摘されていますが違うパターンも試しましたがうまく動作しませんでした。このコードはネットで検索したページのコードを参考にしました。そもそも、そのコード自体に不備があるのか、自分の設定に問題があるのかどちらか教えてください。
3
+ ```PHPを使って会員登録のページを作成している途中ですが、一通りできて会員登録の登録を済ませてログインするとエラーページが出てきます。フィルターの部分と指摘されていますが違うパターンも試しましたがうまく動作しませんでした。このコードはネットで検索したページのコードを参考にしました。そもそも、そのコード自体に不備があるのか、自分の設定に問題があるのかどちらか教えてください。
2
4
 
3
5
  ●参考にしたコードです。
4
6
  https://qiita.com/qwertyuiopngsdfg/items/597da67387723a5aedad
5
7
 
6
8
 
9
+ ```php
7
- ●自分のコードです。
10
+ <?php
8
- ![自分のコードです。](769edb17fd6169808784cc894408fe5c.png)
11
+ // error_reporting(E_ALL & ~E_NOTICE);
12
+ require_once("config.php");
9
13
 
14
+ session_start();
10
15
 
16
+
17
+ if (!filter_var($_SESSION['email'], FILTER_VALIDATE_EMAIL)) {
18
+ echo '入力された値が不正です。';
19
+ return false;
20
+ }
21
+
22
+ try {
23
+ $pdo = new PDO(DSN, DB_USER, DB_PASS);
24
+ $stmt = $pdo->prepare('SELECT * FROM members WHERE email=?');
25
+ $stmt->execute([$_POST['email']]);
26
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
27
+ } catch (\Exception $e) {
28
+ echo $e->getMessage() . PHP_EOL;
29
+ }
30
+
31
+ if (!isset($row['email'])) {
32
+ echo ' メールアドレス又はパスワードが間違っています。';
33
+ return false;
34
+ }
35
+
36
+ if (password_verify($_POST['password'], $row['password'])) {
37
+ session_regenerate_id(true);
38
+ $_SESSION['EMAIL'] = $row['email'];
39
+ echo 'ログインしました。';
40
+ } else {
41
+ echo 'メールアドレス又はパスワードが間違っています。';
42
+ return false;
43
+ }
44
+
45
+
46
+ ?>
47
+ ```
48
+
11
49
  ●エラーページです。
12
50
  ![エラーページです。](9636b27b6033dc1a90387b4432e3f6e8.png)