回答編集履歴
2
参考サイトとlogout\.phpに関する解説を追加
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
ソースコードの解説を修正。
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
|