質問編集履歴

2

2020/06/22 11:56

投稿

Hikoukai
Hikoukai

スコア24

test CHANGED
File without changes
test CHANGED
@@ -8,9 +8,9 @@
8
8
 
9
9
  $conn=mysqli_connect('サーバー','ユーザー','パスワード');
10
10
 
11
- $sqlmtugb="SELECT * FROM member where mail;";
11
+ $sql="SELECT * FROM member where mail;";
12
12
 
13
- $result=mysqli_query($conn,$sqlmtugb);
13
+ $result=mysqli_query($conn,$sql);
14
14
 
15
15
  if(mysqli_num_rows($result)!=0){
16
16
 

1

2020/06/22 11:55

投稿

Hikoukai
Hikoukai

スコア24

test CHANGED
File without changes
test CHANGED
@@ -6,231 +6,17 @@
6
6
 
7
7
  ```php
8
8
 
9
- <?php
9
+ $conn=mysqli_connect('サーバー','ユーザー','パスワード');
10
10
 
11
- session_start();
11
+ $sqlmtugb="SELECT * FROM member where mail;";
12
12
 
13
-
13
+ $result=mysqli_query($conn,$sqlmtugb);
14
14
 
15
- header("Content-type: text/html; charset=utf-8");
15
+ if(mysqli_num_rows($result)!=0){
16
16
 
17
-
17
+ echo "すでに登録済みです。<br>";
18
18
 
19
- //クロスサイトリクエストフォージェリ(CSRF)対策のトークン判定
20
-
21
- if ($_POST['token'] != $_SESSION['token']){
22
-
23
- echo "<script>";
24
-
25
- echo "alert('不正アクセスです');";
26
-
27
- echo "location.href='ログインページのリンク';";
28
-
29
- echo "</script>";
30
-
31
- exit();
32
-
33
- }
19
+ }
34
-
35
-
36
-
37
- //クリックジャッキング対策
38
-
39
- header('X-FRAME-OPTIONS: SAMEORIGIN');
40
-
41
-
42
-
43
- //データベース接続
44
-
45
- require_once("db.php");
46
-
47
- $dbh = db_connect();
48
-
49
-
50
-
51
- //エラーメッセージの初期化
52
-
53
- $errors = array();
54
-
55
-
56
-
57
- if(empty($_POST)) {
58
-
59
- header("Location: registration_mail_form.php");
60
-
61
- exit();
62
-
63
- }
64
-
65
-
66
-
67
- $mail = $_SESSION['mail'];
68
-
69
- $account = $_SESSION['account'];
70
-
71
-
72
-
73
- //パスワードのハッシュ化
74
-
75
- $password_hash = password_hash($_SESSION['password'], PASSWORD_DEFAULT);
76
-
77
-
78
-
79
- //ここでデータベースに登録する
80
-
81
- try{
82
-
83
- //例外処理を投げる(スロー)ようにする
84
-
85
- $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
86
-
87
-
88
-
89
- //トランザクション開始
90
-
91
- $dbh->beginTransaction();
92
-
93
-
94
-
95
- //memberテーブルに本登録する
96
-
97
- $statement = $dbh->prepare("INSERT INTO member (account,mail,password) VALUES (:account,:mail,:password_hash)");
98
-
99
- //プレースホルダへ実際の値を設定する
100
-
101
- $statement->bindValue(':account', $account, PDO::PARAM_STR);
102
-
103
- $statement->bindValue(':mail', $mail, PDO::PARAM_STR);
104
-
105
- $statement->bindValue(':password_hash', $password_hash, PDO::PARAM_STR);
106
-
107
- $statement->execute();
108
-
109
-
110
-
111
- //pre_memberのflagを1にする
112
-
113
- $statement = $dbh->prepare("UPDATE pre_member SET flag=1 WHERE mail=(:mail)");
114
-
115
- //プレースホルダへ実際の値を設定する
116
-
117
- $statement->bindValue(':mail', $mail, PDO::PARAM_STR);
118
-
119
- $statement->execute();
120
-
121
-
122
-
123
- // トランザクション完了(コミット)
124
-
125
- $dbh->commit();
126
-
127
-
128
-
129
- //データベース接続切断
130
-
131
- $dbh = null;
132
-
133
-
134
-
135
- //セッション変数を全て解除
136
-
137
- $_SESSION = array();
138
-
139
-
140
-
141
- //セッションクッキーの削除・sessionidとの関係を探れ。つまりはじめのsesssionidを名前でやる
142
-
143
- if (isset($_COOKIE["PHPSESSID"])) {
144
-
145
- setcookie("PHPSESSID", '', time() - 1800, '/');
146
-
147
- }
148
-
149
-
150
-
151
- //セッションを破棄する
152
-
153
- session_destroy();
154
-
155
-
156
-
157
- /*
158
-
159
- 登録完了のメールを送信
160
-
161
- */
162
-
163
-
164
-
165
- }catch (PDOException $e){
166
-
167
- //トランザクション取り消し(ロールバック)
168
-
169
- $dbh->rollBack();
170
-
171
- $errors['error'] = "もう一度やりなおして下さい。";
172
-
173
- print('Error:'.$e->getMessage());
174
-
175
- }
176
-
177
-
178
-
179
- ?>
180
-
181
-
182
-
183
- <!DOCTYPE html>
184
-
185
- <html>
186
-
187
- <head>
188
-
189
- <title>登録完了</title>
190
-
191
- <meta charset="utf-8">
192
-
193
- </head>
194
-
195
- <body>
196
-
197
-
198
-
199
- <?php if (count($errors) === 0): ?>
200
-
201
- <h1>会員登録完了</h1>
202
-
203
-
204
-
205
- <p>登録が完了いたしました。ログインしてください</p>
206
-
207
- <p><button onclick="location.href='ログインページのリンク';">ログインする</button></p>
208
-
209
-
210
-
211
- <?php elseif(count($errors) > 0): ?>
212
-
213
-
214
-
215
- <?php
216
-
217
- foreach($errors as $value){
218
-
219
- echo "<p>".$value."</p>";
220
-
221
- }
222
-
223
- ?>
224
-
225
-
226
-
227
- <?php endif; ?>
228
-
229
-
230
-
231
- </body>
232
-
233
- </html>
234
20
 
235
21
  ```
236
22
 
@@ -238,7 +24,7 @@
238
24
 
239
25
  起こっていること
240
26
 
241
- メールアドレスの登録が重複される。
27
+ メールアドレスの登録が重複をしないようにしようとしてみて考えてたら、このようなコードになった
242
28
 
243
29
  ーーーーーーーー
244
30