質問編集履歴

2

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

2019/09/20 04:51

投稿

makosama4493
makosama4493

スコア21

test CHANGED
File without changes
test CHANGED
@@ -167,3 +167,39 @@
167
167
  </html>
168
168
 
169
169
  <?php } ?>
170
+
171
+
172
+
173
+ 追記です。
174
+
175
+ bbb.phpのトップに
176
+
177
+ <?php
178
+
179
+ include 'includes/login.php';
180
+
181
+ ?>
182
+
183
+ というコードがあります。
184
+
185
+ *直接URLを入力された際、未ログインの場合にはlogin画面へ遷移するためです。
186
+
187
+
188
+
189
+ includes/login.phpのコードは、
190
+
191
+ <?php
192
+
193
+ session_start;
194
+
195
+ if(!isset($_SESSION['id'])) {
196
+
197
+ header('Location: login.php');
198
+
199
+ exit();
200
+
201
+ }
202
+
203
+ ?>
204
+
205
+ となります。

1

コードを追記しました

2019/09/20 04:51

投稿

makosama4493
makosama4493

スコア21

test CHANGED
File without changes
test CHANGED
@@ -33,3 +33,137 @@
33
33
  ①cookieを削除したが、loginボタンをクリックすると、また同じメッセージが表示されます。
34
34
 
35
35
  ②bbb.phpをbbb.htmlにすると問題なく表示されます
36
+
37
+
38
+
39
+
40
+
41
+ たびたび失礼しました。
42
+
43
+ コードを追記します。
44
+
45
+
46
+
47
+ <?php
48
+
49
+ session_start(); //セッション開始
50
+
51
+
52
+
53
+ if(isset($_SESSION['id'])){
54
+
55
+ //セッションにユーザーIDがある=ログインしている
56
+
57
+ //トップページに遷移する
58
+
59
+ header('Location: bbb.php');
60
+
61
+ } else if(isset($_POST['name']) && isset($_POST['password'])){
62
+
63
+ //ログインしていないがユーザー名とパスワードが送信されたとき
64
+
65
+
66
+
67
+ //データベースに接続
68
+
69
+ $dsn = 'mysql:host=localhost;dbname=msqdata;charset=utf8';
70
+
71
+ $user = 'name';
72
+
73
+ $password = 'password';//nameに設定したパスワード
74
+
75
+
76
+
77
+ try {
78
+
79
+ $db = new PDO($dsn, $user, $password);
80
+
81
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
82
+
83
+ $stmt = $db->prepare("SELECT * FROM user WHERE name=:name AND password=:password");
84
+
85
+
86
+
87
+ //パラメータを割り当て
88
+
89
+ $stmt->bindParam(':name', $_POST['name'], PDO::PARAM_STR);
90
+
91
+ $stmt->bindParam(':password', sha1($_POST['password']), PDO::PARAM_STR);
92
+
93
+
94
+
95
+ //クエリの実行
96
+
97
+ $stmt->execute();
98
+
99
+
100
+
101
+ if($row = $stmt->fetch()){
102
+
103
+ //ユーザーが存在していたのでセッションにユーザーIDをセット
104
+
105
+ $_SESSION['id']=$row['id'];
106
+
107
+ header('Location: bbb.php');
108
+
109
+ exit();
110
+
111
+ } else {
112
+
113
+ //1レコードも取得できなかった時
114
+
115
+ //ユーザー名・パスワードが間違っている可能性あり
116
+
117
+ //もう一度ログインフォームを表示
118
+
119
+ header('Location: login.php');
120
+
121
+ exit();
122
+
123
+ }
124
+
125
+ } catch(PDOException $e) {
126
+
127
+ die('エラー:'.$e->getMessage());
128
+
129
+ }
130
+
131
+ } else {
132
+
133
+ //ログインしていない場合はログインフォームを表示する
134
+
135
+ ?>
136
+
137
+ <!DOCTYPE html>
138
+
139
+ <head>
140
+
141
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
142
+
143
+ <title>login form</title>
144
+
145
+ </head>
146
+
147
+ <body>
148
+
149
+ <h1>Login Form</h1>
150
+
151
+
152
+
153
+ <h2>Register your information</h2>
154
+
155
+ <form action="login.php" method="post">
156
+
157
+ <p>Username: <input type="text" name="name"></p>
158
+
159
+ <p>Password : <input type="password" name="password"></p>
160
+
161
+ <p><input type="submit" value="Login"></p>
162
+
163
+ </form>
164
+
165
+ </body>
166
+
167
+ </html>
168
+
169
+ <?php } ?>