回答編集履歴

2

参考サイトとlogout\.phpに関する解説を追加

2016/03/26 12:05

投稿

lib
lib

スコア446

test CHANGED
@@ -12,6 +12,20 @@
12
12
 
13
13
 
14
14
 
15
+ [追記] ここから
16
+
17
+ この解説の参考サイト:
18
+
19
+ 1.[SQL](http://hissori18.web.fc2.com/)
20
+
21
+ 2.[PHPのセッション](http://www.phppro.jp/school/phpschool/vol8/1)
22
+
23
+ 3.[htmlとフォーム](http://www.kanzaki.com/docs/html/htminfo31.html)
24
+
25
+ [追記] ここまで
26
+
27
+
28
+
15
29
  ---
16
30
 
17
31
 
@@ -407,3 +421,137 @@
407
421
  </html>
408
422
 
409
423
  ```
424
+
425
+
426
+
427
+ [追記]
428
+
429
+ logout.php
430
+
431
+
432
+
433
+ 閲覧の必要がなくなった時にログアウトして表示される画面
434
+
435
+ また、セッションタイムアウトした時には、セッションタイムアウトがわかるメッセージが表示される
436
+
437
+ 主に$_SESSION["USERID"]が存在有無にかかわらずメッセージが表示される
438
+
439
+
440
+
441
+ ここでは、設計前提に従い、
442
+
443
+ PARTIDとして扱いたいため $_SESSION["USERID"]をPARTIDとして変更させる必要がある。
444
+
445
+
446
+
447
+ ```php
448
+
449
+ <?php
450
+
451
+ session_start();
452
+
453
+
454
+
455
+ // [teratail]$_SESSION["PARTID"]が存在しないときにログアウトしましたと表示される
456
+
457
+ if (isset($_SESSION["PARTID"])) {
458
+
459
+ $errorMessage = "ログアウトしました。";
460
+
461
+ }
462
+
463
+ else {
464
+
465
+ $errorMessage = "セッションがタイムアウトしました。";
466
+
467
+ }
468
+
469
+ // セッション変数のクリア
470
+
471
+ $_SESSION = array();
472
+
473
+ // クッキーの破棄は不要
474
+
475
+ //if (ini_get("session.use_cookies")) {
476
+
477
+ // $params = session_get_cookie_params();
478
+
479
+ // setcookie(session_name(), '', time() - 42000,
480
+
481
+ // $params["path"], $params["domain"],
482
+
483
+ // $params["secure"], $params["httponly"]
484
+
485
+ // );
486
+
487
+ //}
488
+
489
+ // セッションクリア
490
+
491
+ @session_destroy();
492
+
493
+ ?>
494
+
495
+
496
+
497
+ <!doctype html>
498
+
499
+ <html>
500
+
501
+ <head>
502
+
503
+ <meta charset="UTF-8">
504
+
505
+ <title>サンプルアプリケーション</title>
506
+
507
+ </head>
508
+
509
+ <body>
510
+
511
+ <h1>ログイン機能 サンプルアプリケーション</h1>
512
+
513
+ <div><?php echo $errorMessage; ?></div>
514
+
515
+ <ul>
516
+
517
+ <li><a href="login.php">ログイン画面に戻る</a></li>
518
+
519
+ </ul>
520
+
521
+ </body>
522
+
523
+ </html>
524
+
525
+ ```
526
+
527
+
528
+
529
+ [終わりに]
530
+
531
+
532
+
533
+ ---
534
+
535
+
536
+
537
+ 以上で解説を終えますが、
538
+
539
+
540
+
541
+ 当初の質問から懸念していた内容は、**どこかのサイトを参照したと**いう記述がなかったため
542
+
543
+ どの回答をすべきかという点がわからず推測で対応することになりました。
544
+
545
+ 以降質問する際は、 まず なにを したか  そして なにを 調べて どう 判断(感じた)か。
546
+
547
+ それを [5H1H](https://ja.wikipedia.org/wiki/5W1H)形式であらかじめ質問の整理を行うようにしてください。**自分が困った内容を、アヒルに説明してみる。**
548
+
549
+ というのがありますが。僕は幼稚園に説明するとしたら。をお勧めします。
550
+
551
+ そうすることで、回答を持ってる方が即時で回答ができたり、また、別の質問者がこの回答や質問を
552
+
553
+ ご覧になった時に参考になることがあります。
554
+
555
+
556
+
557
+

1

ソースコードの解説を修正。

2016/03/26 12:05

投稿

lib
lib

スコア446

test CHANGED
@@ -76,8 +76,38 @@
76
76
 
77
77
 
78
78
 
79
+ main.phpでは、useridの表示ではなくあらかじめlogin.phpで入力されたpartidを
80
+
81
+ 表示している。以下大まかな処理のイメージを順番に
82
+
83
+ (1) login.phpで入力フォームを作成。
84
+
85
+
86
+
87
+ (2) login.phpで入力からpartid, passwordを受け取る。
88
+
89
+
90
+
91
+ (3) 事前チェックで入力値が空でないことを確認して、認証させる。
92
+
93
+
94
+
95
+ (4) 認証は、partidがデータベースに存在しているか。
96
+
97
+
98
+
99
+ (5) データが存在すると、main.phpを表示するようにしている。
100
+
101
+
102
+
103
+
104
+
79
105
  login.php
80
106
 
107
+ 主にユーザーからの入力と検証、またログインチェック(データが存在するか)を行う。
108
+
109
+ ログインに成功(データの存在確認)すると、main.phpを表示させる。
110
+
81
111
 
82
112
 
83
113
  ```php
@@ -216,7 +246,7 @@
216
246
 
217
247
  // 以降は、PHP間セッションが有効な間 $_SESSION["PARTID"]として受け取り表示や検証が行える。
218
248
 
219
- $_SESSION["PARTID"] = $_POST["partid"]; // <- この記述が代入です。
249
+ $_SESSION["PARTID"] = $_POST["partid"]; // <- [teratail]この記述が代入で、かつ必要な絶対条件です。
220
250
 
221
251
  // [teratail]この渡し方は、あらかじめFORMから入力されたname="partid"の属性をもつ、タグinputから受け取っている。
222
252
 
@@ -310,24 +340,16 @@
310
340
 
311
341
 
312
342
 
313
- main.phpでは、useridの表示ではなくあらかじめlogin.phpで入力されたpartidを
314
-
315
- 表示している。以下順番に
316
-
317
- ・login.phpで入力フォームを作成。
318
-
319
- ・login.phpで入力からpartid, passwordを受け取る。
320
-
321
- ・事前チェックで入力値が空でないことを確認して、認証させる。
322
-
323
- ・認証は、partidがデータベースに存在しているか。
324
-
325
- ・データが存在すると、main.phpを表示するようにしている。
326
-
327
-
328
-
329
343
  main.php
330
344
 
345
+
346
+
347
+ ログインに成功すると表示される画面、また画面ではセッションに$_SESSION["PARTID"]が存在するかをチェックし存在しなければ、直ちにlogout.phpを表示させる。
348
+
349
+ ログインに成功してれば、$_SESSION["PARTID"]は存在しているので、画面に表示される。
350
+
351
+
352
+
331
353
  ```php
332
354
 
333
355
  <?php