質問編集履歴

2

function\.phpの追加と余計な部分の削除

2017/08/12 06:57

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -14,224 +14,338 @@
14
14
 
15
15
  <?php
16
16
 
17
+ // error_reporting(E_ALL);
18
+
19
+ // ini_set('display_errors', 1);
20
+
21
+
22
+
23
+ require_once("function.php");
24
+
25
+ session_start();
26
+
27
+ header("Content-type: text/html; charset=utf-8");
28
+
29
+
30
+
31
+ $_SESSION["token"] = get_csrf_token();
32
+
33
+
34
+
35
+ $id = $_POST['id'];
36
+
37
+ $mail = $_POST["mail"];
38
+
39
+ $password = $_POST["password"];
40
+
41
+ $confirm_password = $_POST["confirm_password"];
42
+
43
+
44
+
45
+ if($password != $confirm_password){
46
+
47
+ //pass不一致
48
+
49
+ $_SESSION["error_status"] = 1;
50
+
51
+ header("HTTP/1.1 301 Moved Permanently");
52
+
53
+ header("Location: register.php");
54
+
55
+ exit();
56
+
57
+ }
58
+
59
+ //IDcheck
60
+
61
+
62
+
63
+ //DB接続 ※
64
+
65
+ $dsn = 'mysql:host=localhost;dbname=portfolio;charset=utf8';
66
+
67
+ $user = 'root';
68
+
69
+ $password = '';
70
+
71
+ $dbh = new PDO($dsn,$user,$password);
72
+
73
+ $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
74
+
75
+
76
+
77
+ //プレースホルダでSQL作成 ※
78
+
79
+ $sql = "SELECT COUNT(*) AS CNT FROM USER WHERE ID = ?;";
80
+
81
+
82
+
83
+ //パラメータの型指定 ※
84
+
85
+ $stmt = $dbh->prepare($sql, array('text'));
86
+
87
+
88
+
89
+ //パラメータを渡してSQL実行
90
+
91
+ $rs = $stmt->execute(array($id));
92
+
93
+
94
+
95
+ // try{
96
+
97
+ // $pdo = new PDO(
98
+
99
+ // 'mysql:host=localhost;dbname=portfolio;charset=utf8',
100
+
101
+ // 'root',
102
+
103
+ // '';
104
+
105
+ // [
106
+
107
+ // PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
108
+
109
+ // PDO::ATTR_DEFAULT_FETCH_MODE => PDO:: FETCH_ASSOC,
110
+
111
+ // ]
112
+
113
+ // );
114
+
115
+ // }catch(PDOException $e){
116
+
117
+ // header('Content-Type: text/plain; charset=UTF-8', true , 500);
118
+
119
+ // exit($e->getMessage());
120
+
121
+ // }
122
+
123
+
124
+
125
+ try {
126
+
127
+ $dbh = new PDO($dsn, $user, $password);
128
+
129
+ $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
130
+
131
+ } catch (PDOException $e) {
132
+
133
+ echo 'Connection failed: ' . $e->getMessage();
134
+
135
+ }
136
+
137
+
138
+
139
+ while ($row = $stmt->fetch()){
140
+
141
+ $count = $row['CNT'];
142
+
143
+ }
144
+
145
+
146
+
147
+ $dbh = null;
148
+
149
+
150
+
151
+ //IDがすでに登録されていた場合
152
+
153
+
154
+
155
+ if($count != 0){
156
+
157
+ $_SESSION['error_status'] = 2;
158
+
159
+ header("HTTP/1.1 301 Moved Permanently");
160
+
161
+ header("Location: register.php");
162
+
163
+ exit();
164
+
165
+ }
166
+
167
+
168
+
169
+ //エラー情報リセット
170
+
171
+ $_SESSION['error_status'] = 0;
172
+
173
+
174
+
175
+ // print_r($_SESSION);
176
+
177
+ ?>
178
+
179
+
180
+
181
+ <!DOCTYPE html>
182
+
183
+ <html lang="ja">
184
+
185
+ <head>
186
+
187
+ <meta charset="UTF-8">
188
+
189
+ </head>
190
+
191
+ <form action="register_submit.php" method="post" >
192
+
193
+ <table border="0">
194
+
195
+ <tr>
196
+
197
+ <td>ID</td>
198
+
199
+ <td><?php echo htmlspecialchars($id , ENT_QUOTES , "UTF-8"); ?></td>
200
+
201
+
202
+
203
+ <td>メールアドレス</td>
204
+
205
+ <td><?php echo htmlspecialchars($mail , ENT_QUOTES , "UTF-8"); ?></td>
206
+
207
+ </table>
208
+
209
+
210
+
211
+ <input type="hidden" name="id" value="<?php echo htmlspecialchars($id , ENT_QUOTES , "UTF-8") ?>" >
212
+
213
+ <input type="hidden" name="mail" value="<?php echo htmlspecialchars($mail , ENT_QUOTES , "UTF-8") ?>" >
214
+
215
+ <input type="hidden" name="password" value="<?php echo htmlspecialchars($password , ENT_QUOTES , "UTF-8") ?>" >
216
+
217
+ <input type="hidden" name="token" value="<?php echo htmlspecialchars($_SESSION['token'] , ENT_QUOTES , "UTF-8") ?>" >
218
+
219
+
220
+
221
+ <input type="submit" value="登録">
222
+
223
+ <input type="reset" value="リセット">
224
+
225
+ <input type="button" value="戻る" onclick="history.back();">
226
+
227
+ </form>
228
+
229
+ </body>
230
+
231
+ </html>
232
+
233
+ ?>
234
+
235
+
236
+
237
+ ```
238
+
239
+ function.php
240
+
241
+ ```
242
+
243
+ <!DOCTYPE html>
244
+
245
+
246
+
17
247
  <?php
18
248
 
19
- // error_reporting(E_ALL);
20
-
21
- // ini_set('display_errors', 1);
22
-
23
-
24
-
25
- require_once("function.php");
26
-
27
- session_start();
28
-
29
- header("Content-type: text/html; charset=utf-8");
30
-
31
-
32
-
33
- $_SESSION["token"] = get_csrf_token();
34
-
35
-
36
-
37
- $id = $_POST['id'];
38
-
39
- $mail = $_POST["mail"];
40
-
41
- $password = $_POST["password"];
42
-
43
- $confirm_password = $_POST["confirm_password"];
44
-
45
-
46
-
47
- if($password != $confirm_password){
48
-
49
- //pass不一致
50
-
51
- $_SESSION["error_status"] = 1;
52
-
53
- header("HTTP/1.1 301 Moved Permanently");
54
-
55
- header("Location: register.php");
56
-
57
- exit();
58
-
59
- }
60
-
61
- //IDcheck
62
-
63
-
64
-
65
- //DB接続 ※
66
-
67
- $dsn = 'mysql:host=localhost;dbname=portfolio;charset=utf8';
68
-
69
- $user = 'root';
70
-
71
- $password = '';
72
-
73
- $dbh = new PDO($dsn,$user,$password);
74
-
75
- $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
76
-
77
-
78
-
79
- //プレースホルダでSQL作成 ※
80
-
81
- $sql = "SELECT COUNT(*) AS CNT FROM USER WHERE ID = ?;";
82
-
83
-
84
-
85
- //パラメータの型指定 ※
86
-
87
- $stmt = $dbh->prepare($sql, array('text'));
88
-
89
-
90
-
91
- //パラメータを渡してSQL実行
92
-
93
- $rs = $stmt->execute(array($id));
94
-
95
-
96
-
97
- // try{
98
-
99
- // $pdo = new PDO(
100
-
101
- // 'mysql:host=localhost;dbname=portfolio;charset=utf8',
102
-
103
- // 'root',
104
-
105
- // '';
106
-
107
- // [
108
-
109
- // PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
110
-
111
- // PDO::ATTR_DEFAULT_FETCH_MODE => PDO:: FETCH_ASSOC,
112
-
113
- // ]
114
-
115
- // );
116
-
117
- // }catch(PDOException $e){
118
-
119
- // header('Content-Type: text/plain; charset=UTF-8', true , 500);
120
-
121
- // exit($e->getMessage());
122
-
123
- // }
124
-
125
-
126
-
127
- try {
128
-
129
- $dbh = new PDO($dsn, $user, $password);
130
-
131
- $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
132
-
133
- } catch (PDOException $e) {
134
-
135
- echo 'Connection failed: ' . $e->getMessage();
136
-
137
- }
138
-
139
-
140
-
141
- while ($row = $stmt->fetch()){
142
-
143
- $count = $row['CNT'];
144
-
145
- }
146
-
147
-
148
-
149
- $dbh = null;
150
-
151
-
152
-
153
- //IDがすでに登録されていた場合
154
-
155
-
156
-
157
- if($count != 0){
158
-
159
- $_SESSION['error_status'] = 2;
160
-
161
- header("HTTP/1.1 301 Moved Permanently");
162
-
163
- header("Location: register.php");
164
-
165
- exit();
166
-
167
- }
168
-
169
-
170
-
171
- //エラー情報リセット
172
-
173
- $_SESSION['error_status'] = 0;
174
-
175
-
176
-
177
- // print_r($_SESSION);
249
+
250
+
251
+ define("DNS","mysql://user01:pass@localhost/posrtfolio?charset=utf8");
252
+
253
+ define("SERVER","192.168.11.11");
254
+
255
+ define("SENDER_EMAIL","root@localhost");
256
+
257
+ define("STRETCH_COUNT" , 1000);
258
+
259
+
260
+
261
+ /* CSRFトークン作成 */
262
+
263
+ function get_csrf_token(){
264
+
265
+ $TOKEN_LENGTH = 16;
266
+
267
+ $bytes = openssl_random_pseudo_bytes($TOKEN_LENGTH);
268
+
269
+ return bin2hex($bytes);
270
+
271
+ }
272
+
273
+
274
+
275
+ /* パスワードのソルト+ストレッチング */
276
+
277
+ function stretchedPassword($salt,$password){
278
+
279
+
280
+
281
+ $hash_pass="";
282
+
283
+
284
+
285
+ for($i = 0; $i<STRETCH_COUNT; $i++){
286
+
287
+ $hash_pass = hash("sha256",($hash_pass . $salt . $password));
288
+
289
+ }
290
+
291
+ return $hash_pass;
292
+
293
+ }
294
+
295
+
296
+
297
+ /* ソルト作成 */
298
+
299
+ function get_salt(){
300
+
301
+ $TOKEN_LENGTH = 4;//4*2=8byte
302
+
303
+ $bytes = openssl_random_pseudo_bytes($TOKEN_LENGTH);
304
+
305
+ return bin2hex($bytes);
306
+
307
+ }
308
+
309
+
310
+
311
+ /* URLの一時パスワード作成 */
312
+
313
+ function get_url_password(){
314
+
315
+ $TOKEN_LENGTH = 16;//16*2=32byte
316
+
317
+ $bytes = openssl_random_pseudo_bytes($TOKEN_LENGTH);
318
+
319
+ return hash("sha256",$bytes);
320
+
321
+ }
322
+
323
+
178
324
 
179
325
  ?>
180
326
 
181
327
 
182
328
 
329
+
330
+
183
- <!DOCTYPE html>
331
+ <html>
184
-
185
- <html lang="ja">
186
332
 
187
333
  <head>
188
334
 
189
- <meta charset="UTF-8">
335
+ <meta charset="UTF-8">
336
+
190
-
337
+ <title></title>
338
+
191
- </head>
339
+ </head>
192
-
193
- <form action="register_submit.php" method="post" >
340
+
194
-
195
- <table border="0">
196
-
197
- <tr>
341
+ <body>
198
-
199
- <td>ID</td>
342
+
200
-
201
- <td><?php echo htmlspecialchars($id , ENT_QUOTES , "UTF-8"); ?></td>
343
+
202
-
203
-
204
-
205
- <td>メールアドレス</td>
344
+
206
-
207
- <td><?php echo htmlspecialchars($mail , ENT_QUOTES , "UTF-8"); ?></td>
208
-
209
- </table>
210
-
211
-
212
-
213
- <input type="hidden" name="id" value="<?php echo htmlspecialchars($id , ENT_QUOTES , "UTF-8") ?>" >
214
-
215
- <input type="hidden" name="mail" value="<?php echo htmlspecialchars($mail , ENT_QUOTES , "UTF-8") ?>" >
216
-
217
- <input type="hidden" name="password" value="<?php echo htmlspecialchars($password , ENT_QUOTES , "UTF-8") ?>" >
218
-
219
- <input type="hidden" name="token" value="<?php echo htmlspecialchars($_SESSION['token'] , ENT_QUOTES , "UTF-8") ?>" >
220
-
221
-
222
-
223
- <input type="submit" value="登録">
224
-
225
- <input type="reset" value="リセット">
226
-
227
- <input type="button" value="戻る" onclick="history.back();">
228
-
229
- </form>
230
-
231
- </body>
345
+ </body>
232
-
346
+
233
- </html>
347
+ </html>
234
-
235
- ?>
348
+
349
+
236
350
 
237
351
  ```

1

コメントアウト部分など更新

2017/08/12 06:57

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -14,9 +14,11 @@
14
14
 
15
15
  <?php
16
16
 
17
+ <?php
18
+
17
- error_reporting(E_ALL);
19
+ // error_reporting(E_ALL);
18
-
20
+
19
- ini_set('display_errors', 1);
21
+ // ini_set('display_errors', 1);
20
22
 
21
23
 
22
24
 
@@ -66,9 +68,9 @@
66
68
 
67
69
  $user = 'root';
68
70
 
69
- $pass = '';
71
+ $password = '';
70
-
72
+
71
- $dbh = new PDO($dsn,$user,$pass);
73
+ $dbh = new PDO($dsn,$user,$password);
72
74
 
73
75
  $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
74
76
 
@@ -172,7 +174,7 @@
172
174
 
173
175
 
174
176
 
175
- print_r($_SESSION);
177
+ // print_r($_SESSION);
176
178
 
177
179
  ?>
178
180
 
@@ -230,4 +232,6 @@
230
232
 
231
233
  </html>
232
234
 
235
+ ?>
236
+
233
237
  ```