質問編集履歴

4

コード全文消しました

2019/08/18 02:23

投稿

kaaaarin
kaaaarin

スコア17

test CHANGED
File without changes
test CHANGED
@@ -26,396 +26,6 @@
26
26
 
27
27
 
28
28
 
29
- ### 実際のコード
30
-
31
- 問題だと思われるコードを抜粋しました。
32
-
33
-
34
-
35
- ```PHP
36
-
37
- [login.php]
38
-
39
- <?php
40
-
41
-
42
-
43
- //共通変数・関数ファイルを読込み
44
-
45
- require('function.php');
46
-
47
-
48
-
49
- debug('「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「');
50
-
51
- debug('「 ログインページ ');
52
-
53
- debug('「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「');
54
-
55
- debugLogStart();
56
-
57
-
58
-
59
- //ログイン認証
60
-
61
- require('auth.php');
62
-
63
-
64
-
65
- //================================
66
-
67
- // ログイン画面処理
68
-
69
- //================================
70
-
71
- // post送信されていた場合
72
-
73
- if(!empty($_POST)){
74
-
75
- debug('POST送信があります。');
76
-
77
-
78
-
79
- //変数にユーザー情報を代入
80
-
81
- $email = $_POST['email'];
82
-
83
- var_dump($email);
84
-
85
- $pass = $_POST['pass'];
86
-
87
- $pass_save = (!empty($_POST['pass_save'])) ? true : false; //ショートハンド(略記法)という書き方
88
-
89
-
90
-
91
- //emailの形式チェック
92
-
93
- validEmail($email, 'email');
94
-
95
- //emailの最大文字数チェック
96
-
97
- validMaxLen($email, 'email');
98
-
99
-
100
-
101
- //パスワードの半角英数字チェック
102
-
103
- validHalf($pass, 'pass');
104
-
105
- //パスワードの最大文字数チェック
106
-
107
- validMaxLen($pass, 'pass');
108
-
109
- //パスワードの最小文字数チェック
110
-
111
- validMinLen($pass, 'pass');
112
-
113
-
114
-
115
- //未入力チェック
116
-
117
- validRequired($email, 'email');
118
-
119
- validRequired($pass, 'pass');
120
-
121
-
122
-
123
- if(empty($err_msg)){
124
-
125
- debug('バリデーションOKです。');
126
-
127
-
128
-
129
- //例外処理
130
-
131
- try {
132
-
133
- // DBへ接続
134
-
135
- $dbh = dbConnect();
136
-
137
- // SQL文作成
138
-
139
- $sql = 'SELECT password,id FROM users WHERE email = :email';
140
-
141
- $data = array(':email' => $email);
142
-
143
- // クエリ実行
144
-
145
- $stmt = queryPost($dbh, $sql, $data);
146
-
147
- // クエリ結果の値を取得
148
-
149
- $result = $stmt->fetch(PDO::FETCH_ASSOC);
150
-
151
-
152
-
153
- debug('クエリ結果の中身:'.print_r($result,true));
154
-
155
-
156
-
157
- // パスワード照合
158
-
159
- if(!empty($result) && password_verify($pass, array_shift($result))){
160
-
161
- debug('パスワードがマッチしました。');
162
-
163
-
164
-
165
- //ログイン有効期限(デフォルトを1時間とする)
166
-
167
- $sesLimit = 60*60;
168
-
169
- // 最終ログイン日時を現在日時に
170
-
171
- $_SESSION['login_date'] = time(); //time関数は1970年1月1日 00:00:00 を0として、1秒経過するごとに1ずつ増加させた値が入る
172
-
173
-
174
-
175
- // ログイン保持にチェックがある場合
176
-
177
- if($pass_save){
178
-
179
- debug('ログイン保持にチェックがあります。');
180
-
181
- // ログイン有効期限を30日にしてセット
182
-
183
- $_SESSION['login_limit'] = $sesLimit * 24 * 30;
184
-
185
- }else{
186
-
187
- debug('ログイン保持にチェックはありません。');
188
-
189
- // 次回からログイン保持しないので、ログイン有効期限を1時間後にセット
190
-
191
- $_SESSION['login_limit'] = $sesLimit;
192
-
193
- }
194
-
195
- // ユーザーIDを格納
196
-
197
- $_SESSION['user_id'] = $result['id'];
198
-
199
-
200
-
201
- debug('セッション変数の中身:'.print_r($_SESSION,true));
202
-
203
- debug('マイページへ遷移します。');
204
-
205
- header("Location:mypage.html"); //マイページへ
206
-
207
- }else{
208
-
209
- debug('パスワードがアンマッチです。');
210
-
211
- $err_msg['common'] = MSG09;
212
-
213
- }
214
-
215
-
216
-
217
- } catch (Exception $e) {
218
-
219
- error_log('エラー発生:' . $e->getMessage());
220
-
221
- $err_msg['common'] = MSG07;
222
-
223
- }
224
-
225
- }
226
-
227
- }
228
-
229
- debug('画面表示処理終了 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<');
230
-
231
- ?>
232
-
233
- <!DOCTYPE html>
234
-
235
- <html lang="ja">
236
-
237
-
238
-
239
- <head>
240
-
241
- <meta charset="utf-8">
242
-
243
- <title>ログイン</title>
244
-
245
- <link rel="stylesheet" type="text/css" href="style.css">
246
-
247
- <link href='http://fonts.googleapis.com/css?family=Montserrat:400,700' rel='stylesheet' type='text/css'>
248
-
249
- </head>
250
-
251
-
252
-
253
- <body class="page-login page-1colum">
254
-
255
-
256
-
257
- <!-- メニュー -->
258
-
259
- <header>
260
-
261
- <div class="site-width">
262
-
263
- <h1><a href="index.html">MARKET</a></h1>
264
-
265
- <nav id="top-nav">
266
-
267
- <ul>
268
-
269
- <li><a href="signup.html" class="btn btn-primary">ユーザー登録</a></li>
270
-
271
- <li><a href="">ログイン</a></li>
272
-
273
- </ul>
274
-
275
- </nav>
276
-
277
- </div>
278
-
279
- </header>
280
-
281
-
282
-
283
- <!-- メインコンテンツ -->
284
-
285
- <div id="contents" class="site-width">
286
-
287
-
288
-
289
- <!-- Main -->
290
-
291
- <section id="main" >
292
-
293
-
294
-
295
- <div class="form-container">
296
-
297
-
298
-
299
- <form action="" method="post" class="form">
300
-
301
- <h2 class="title">ログイン</h2>
302
-
303
- <div class="area-msg">
304
-
305
- <?php
306
-
307
- if(!empty($err_msg['common'])) echo $err_msg['common'];
308
-
309
- ?>
310
-
311
- </div>
312
-
313
- <label class="<?php if(!empty($err_msg['email'])) echo 'err'; ?>">
314
-
315
- メールアドレス
316
-
317
- <input type="text" name="email" value="<?php if(!empty($_POST['email'])) echo $_POST['email']; ?>">
318
-
319
- </label>
320
-
321
- <div class="area-msg">
322
-
323
- <?php
324
-
325
- if(!empty($err_msg['email'])) echo $err_msg['email'];
326
-
327
- ?>
328
-
329
- </div>
330
-
331
- <label class="<?php if(!empty($err_msg['pass'])) echo 'err'; ?>">
332
-
333
- パスワード
334
-
335
- <input type="password" name="pass" value="<?php if(!empty($_POST['pass'])) echo $_POST['pass']; ?>">
336
-
337
- </label>
338
-
339
- <div class="area-msg">
340
-
341
- <?php
342
-
343
- if(!empty($err_msg['pass'])) echo $err_msg['pass'];
344
-
345
- ?>
346
-
347
- </div>
348
-
349
- <label>
350
-
351
- <input type="checkbox" name="pass_save">次回ログインを省略する
352
-
353
- </label>
354
-
355
- <div class="btn-container">
356
-
357
- <input type="submit" class="btn btn-mid" value="ログイン">
358
-
359
- </div>
360
-
361
- パスワードを忘れた方は<a href="passRemindSend.html">コチラ</a>
362
-
363
- </form>
364
-
365
- </div>
366
-
367
-
368
-
369
- </section>
370
-
371
-
372
-
373
- </div>
374
-
375
-
376
-
377
- <!-- footer -->
378
-
379
- <footer id="footer">
380
-
381
- Copyright <a href="http://〇〇.com/"></a>. All Rights Reserved.
382
-
383
- </footer>
384
-
385
-
386
-
387
- <script src="js/vendor/jquery-2.2.2.min.js"></script>
388
-
389
- <script>
390
-
391
- $(function(){
392
-
393
- var $ftr = $('#footer');
394
-
395
- if( window.innerHeight > $ftr.offset().top + $ftr.outerHeight() ){
396
-
397
- $ftr.attr({'style': 'position:fixed; top:' + (window.innerHeight - $ftr.outerHeight()) +'px;' });
398
-
399
- }
400
-
401
- });
402
-
403
- </script>
404
-
405
- </body>
406
-
407
- </html>
408
-
409
-
410
-
411
-
412
-
413
- }
414
-
415
- ```<
416
-
417
-
418
-
419
29
 
420
30
 
421
31
  ### 解決したいこと

3

コード全文のせました

2019/08/18 02:23

投稿

kaaaarin
kaaaarin

スコア17

test CHANGED
File without changes
test CHANGED
@@ -6,6 +6,10 @@
6
6
 
7
7
  エラーコードもデバッグも何もでない状態です。
8
8
 
9
+
10
+
11
+
12
+
9
13
  参考コードを再インストールしたところ、一度はPOST送信できましたが、もう一度送信ボタンを押すともとに戻りました。
10
14
 
11
15
 
@@ -30,7 +34,255 @@
30
34
 
31
35
  ```PHP
32
36
 
37
+ [login.php]
38
+
39
+ <?php
40
+
41
+
42
+
43
+ //共通変数・関数ファイルを読込み
44
+
45
+ require('function.php');
46
+
47
+
48
+
49
+ debug('「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「');
50
+
51
+ debug('「 ログインページ ');
52
+
53
+ debug('「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「');
54
+
55
+ debugLogStart();
56
+
57
+
58
+
59
+ //ログイン認証
60
+
61
+ require('auth.php');
62
+
63
+
64
+
65
+ //================================
66
+
67
+ // ログイン画面処理
68
+
69
+ //================================
70
+
71
+ // post送信されていた場合
72
+
73
+ if(!empty($_POST)){
74
+
75
+ debug('POST送信があります。');
76
+
77
+
78
+
79
+ //変数にユーザー情報を代入
80
+
81
+ $email = $_POST['email'];
82
+
83
+ var_dump($email);
84
+
85
+ $pass = $_POST['pass'];
86
+
87
+ $pass_save = (!empty($_POST['pass_save'])) ? true : false; //ショートハンド(略記法)という書き方
88
+
89
+
90
+
91
+ //emailの形式チェック
92
+
93
+ validEmail($email, 'email');
94
+
95
+ //emailの最大文字数チェック
96
+
97
+ validMaxLen($email, 'email');
98
+
99
+
100
+
101
+ //パスワードの半角英数字チェック
102
+
103
+ validHalf($pass, 'pass');
104
+
105
+ //パスワードの最大文字数チェック
106
+
107
+ validMaxLen($pass, 'pass');
108
+
109
+ //パスワードの最小文字数チェック
110
+
111
+ validMinLen($pass, 'pass');
112
+
113
+
114
+
115
+ //未入力チェック
116
+
117
+ validRequired($email, 'email');
118
+
119
+ validRequired($pass, 'pass');
120
+
121
+
122
+
123
+ if(empty($err_msg)){
124
+
125
+ debug('バリデーションOKです。');
126
+
127
+
128
+
129
+ //例外処理
130
+
131
+ try {
132
+
133
+ // DBへ接続
134
+
135
+ $dbh = dbConnect();
136
+
137
+ // SQL文作成
138
+
139
+ $sql = 'SELECT password,id FROM users WHERE email = :email';
140
+
141
+ $data = array(':email' => $email);
142
+
143
+ // クエリ実行
144
+
145
+ $stmt = queryPost($dbh, $sql, $data);
146
+
147
+ // クエリ結果の値を取得
148
+
149
+ $result = $stmt->fetch(PDO::FETCH_ASSOC);
150
+
151
+
152
+
153
+ debug('クエリ結果の中身:'.print_r($result,true));
154
+
155
+
156
+
157
+ // パスワード照合
158
+
159
+ if(!empty($result) && password_verify($pass, array_shift($result))){
160
+
161
+ debug('パスワードがマッチしました。');
162
+
163
+
164
+
165
+ //ログイン有効期限(デフォルトを1時間とする)
166
+
167
+ $sesLimit = 60*60;
168
+
169
+ // 最終ログイン日時を現在日時に
170
+
171
+ $_SESSION['login_date'] = time(); //time関数は1970年1月1日 00:00:00 を0として、1秒経過するごとに1ずつ増加させた値が入る
172
+
173
+
174
+
175
+ // ログイン保持にチェックがある場合
176
+
177
+ if($pass_save){
178
+
179
+ debug('ログイン保持にチェックがあります。');
180
+
181
+ // ログイン有効期限を30日にしてセット
182
+
183
+ $_SESSION['login_limit'] = $sesLimit * 24 * 30;
184
+
185
+ }else{
186
+
187
+ debug('ログイン保持にチェックはありません。');
188
+
189
+ // 次回からログイン保持しないので、ログイン有効期限を1時間後にセット
190
+
191
+ $_SESSION['login_limit'] = $sesLimit;
192
+
193
+ }
194
+
195
+ // ユーザーIDを格納
196
+
197
+ $_SESSION['user_id'] = $result['id'];
198
+
199
+
200
+
201
+ debug('セッション変数の中身:'.print_r($_SESSION,true));
202
+
203
+ debug('マイページへ遷移します。');
204
+
205
+ header("Location:mypage.html"); //マイページへ
206
+
207
+ }else{
208
+
209
+ debug('パスワードがアンマッチです。');
210
+
211
+ $err_msg['common'] = MSG09;
212
+
213
+ }
214
+
215
+
216
+
217
+ } catch (Exception $e) {
218
+
219
+ error_log('エラー発生:' . $e->getMessage());
220
+
221
+ $err_msg['common'] = MSG07;
222
+
223
+ }
224
+
225
+ }
226
+
227
+ }
228
+
229
+ debug('画面表示処理終了 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<');
230
+
231
+ ?>
232
+
233
+ <!DOCTYPE html>
234
+
235
+ <html lang="ja">
236
+
237
+
238
+
239
+ <head>
240
+
241
+ <meta charset="utf-8">
242
+
243
+ <title>ログイン</title>
244
+
245
+ <link rel="stylesheet" type="text/css" href="style.css">
246
+
247
+ <link href='http://fonts.googleapis.com/css?family=Montserrat:400,700' rel='stylesheet' type='text/css'>
248
+
249
+ </head>
250
+
251
+
252
+
253
+ <body class="page-login page-1colum">
254
+
255
+
256
+
257
+ <!-- メニュー -->
258
+
259
+ <header>
260
+
261
+ <div class="site-width">
262
+
263
+ <h1><a href="index.html">MARKET</a></h1>
264
+
265
+ <nav id="top-nav">
266
+
267
+ <ul>
268
+
269
+ <li><a href="signup.html" class="btn btn-primary">ユーザー登録</a></li>
270
+
271
+ <li><a href="">ログイン</a></li>
272
+
273
+ </ul>
274
+
275
+ </nav>
276
+
277
+ </div>
278
+
279
+ </header>
280
+
281
+
282
+
283
+ <!-- メインコンテンツ -->
284
+
33
- div id="contents" class="site-width">
285
+ <div id="contents" class="site-width">
34
286
 
35
287
 
36
288
 
@@ -122,15 +374,43 @@
122
374
 
123
375
 
124
376
 
125
- //変数にユーザー情報を代入。var_dumpで中身を確認したが、処理されていない。(POST送信されていない)
377
+ <!-- footer -->
126
-
378
+
127
- $email = $_POST['email'];
379
+ <footer id="footer">
380
+
128
-
381
+ Copyright <a href="http://〇〇.com/"></a>. All Rights Reserved.
382
+
383
+ </footer>
384
+
385
+
386
+
387
+ <script src="js/vendor/jquery-2.2.2.min.js"></script>
388
+
389
+ <script>
390
+
391
+ $(function(){
392
+
129
- $pass = $_POST['pass'];
393
+ var $ftr = $('#footer');
130
-
394
+
131
- $pass_save = (!empty($_POST['pass_save'])) ? true : false;
395
+ if( window.innerHeight > $ftr.offset().top + $ftr.outerHeight() ){
396
+
132
-
397
+ $ftr.attr({'style': 'position:fixed; top:' + (window.innerHeight - $ftr.outerHeight()) +'px;' });
398
+
133
-
399
+ }
400
+
401
+ });
402
+
403
+ </script>
404
+
405
+ </body>
406
+
407
+ </html>
408
+
409
+
410
+
411
+
412
+
413
+ }
134
414
 
135
415
  ```<
136
416
 

2

マークダウンに訂正しました

2019/08/17 05:15

投稿

kaaaarin
kaaaarin

スコア17

test CHANGED
File without changes
test CHANGED
@@ -120,8 +120,6 @@
120
120
 
121
121
  </div>
122
122
 
123
- ```<
124
-
125
123
 
126
124
 
127
125
  //変数にユーザー情報を代入。var_dumpで中身を確認したが、処理されていない。(POST送信されていない)
@@ -134,6 +132,12 @@
134
132
 
135
133
 
136
134
 
135
+ ```<
136
+
137
+
138
+
139
+
140
+
137
141
  ### 解決したいこと
138
142
 
139
143
  POST送信が正常に行われてログインできるようにしたいです。

1

マークダウンに訂正しました

2019/08/17 05:03

投稿

kaaaarin
kaaaarin

スコア17

test CHANGED
File without changes
test CHANGED
@@ -28,7 +28,9 @@
28
28
 
29
29
 
30
30
 
31
+ ```PHP
32
+
31
- <div id="contents" class="site-width">
33
+ div id="contents" class="site-width">
32
34
 
33
35
 
34
36
 
@@ -118,6 +120,8 @@
118
120
 
119
121
  </div>
120
122
 
123
+ ```<
124
+
121
125
 
122
126
 
123
127
  //変数にユーザー情報を代入。var_dumpで中身を確認したが、処理されていない。(POST送信されていない)