teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

もうしわけありません。再度追記があります。

2019/09/20 04:51

投稿

makosama4493
makosama4493

スコア21

title CHANGED
File without changes
body CHANGED
@@ -82,4 +82,22 @@
82
82
  </form>
83
83
  </body>
84
84
  </html>
85
- <?php } ?>
85
+ <?php } ?>
86
+
87
+ 追記です。
88
+ bbb.phpのトップに
89
+ <?php
90
+ include 'includes/login.php';
91
+ ?>
92
+ というコードがあります。
93
+ *直接URLを入力された際、未ログインの場合にはlogin画面へ遷移するためです。
94
+
95
+ includes/login.phpのコードは、
96
+ <?php
97
+ session_start;
98
+ if(!isset($_SESSION['id'])) {
99
+ header('Location: login.php');
100
+ exit();
101
+ }
102
+ ?>
103
+ となります。

1

コードを追記しました

2019/09/20 04:51

投稿

makosama4493
makosama4493

スコア21

title CHANGED
File without changes
body CHANGED
@@ -15,4 +15,71 @@
15
15
 
16
16
  ■試したこと■
17
17
  ①cookieを削除したが、loginボタンをクリックすると、また同じメッセージが表示されます。
18
- ②bbb.phpをbbb.htmlにすると問題なく表示されます
18
+ ②bbb.phpをbbb.htmlにすると問題なく表示されます
19
+
20
+
21
+ たびたび失礼しました。
22
+ コードを追記します。
23
+
24
+ <?php
25
+ session_start(); //セッション開始
26
+
27
+ if(isset($_SESSION['id'])){
28
+ //セッションにユーザーIDがある=ログインしている
29
+ //トップページに遷移する
30
+ header('Location: bbb.php');
31
+ } else if(isset($_POST['name']) && isset($_POST['password'])){
32
+ //ログインしていないがユーザー名とパスワードが送信されたとき
33
+
34
+ //データベースに接続
35
+ $dsn = 'mysql:host=localhost;dbname=msqdata;charset=utf8';
36
+ $user = 'name';
37
+ $password = 'password';//nameに設定したパスワード
38
+
39
+ try {
40
+ $db = new PDO($dsn, $user, $password);
41
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
42
+ $stmt = $db->prepare("SELECT * FROM user WHERE name=:name AND password=:password");
43
+
44
+ //パラメータを割り当て
45
+ $stmt->bindParam(':name', $_POST['name'], PDO::PARAM_STR);
46
+ $stmt->bindParam(':password', sha1($_POST['password']), PDO::PARAM_STR);
47
+
48
+ //クエリの実行
49
+ $stmt->execute();
50
+
51
+ if($row = $stmt->fetch()){
52
+ //ユーザーが存在していたのでセッションにユーザーIDをセット
53
+ $_SESSION['id']=$row['id'];
54
+ header('Location: bbb.php');
55
+ exit();
56
+ } else {
57
+ //1レコードも取得できなかった時
58
+ //ユーザー名・パスワードが間違っている可能性あり
59
+ //もう一度ログインフォームを表示
60
+ header('Location: login.php');
61
+ exit();
62
+ }
63
+ } catch(PDOException $e) {
64
+ die('エラー:'.$e->getMessage());
65
+ }
66
+ } else {
67
+ //ログインしていない場合はログインフォームを表示する
68
+ ?>
69
+ <!DOCTYPE html>
70
+ <head>
71
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
72
+ <title>login form</title>
73
+ </head>
74
+ <body>
75
+ <h1>Login Form</h1>
76
+
77
+ <h2>Register your information</h2>
78
+ <form action="login.php" method="post">
79
+ <p>Username: <input type="text" name="name"></p>
80
+ <p>Password : <input type="password" name="password"></p>
81
+ <p><input type="submit" value="Login"></p>
82
+ </form>
83
+ </body>
84
+ </html>
85
+ <?php } ?>