質問編集履歴

1

文章修正

2019/09/06 13:09

投稿

imada
imada

スコア4

test CHANGED
File without changes
test CHANGED
@@ -24,240 +24,188 @@
24
24
 
25
25
  ```
26
26
 
27
- <!DOCTYPE html>
28
-
29
- <html>
30
-
31
- <head>
32
-
33
- <meta charset="utf-8">
34
-
35
- <title>講師</title>
36
-
37
- <link rel="stylesheet" type="text/css" href="style.css">
38
-
39
- </head>
40
-
41
- <body>
42
-
43
- <div id="wrapper">
44
-
45
- <div id="top">
46
-
47
- <img alt="トップ画像" src="img/top.jpg"style="width:auto;height:auto;"/>
27
+ <?php
28
+
29
+ session_start();
30
+
31
+
32
+
33
+ $db['host'] = "localhost"; // DBサーバのURL
34
+
35
+ $db['user'] = "suzuki"; // ユーザー名
36
+
37
+ $db['pass'] = "love"; // ユーザー名のパスワード
38
+
39
+ $db['dbname'] = "teacher"; // データベース名
40
+
41
+ // エラーメッセージの初期化
42
+
43
+ $errorMessage = "";
44
+
45
+
46
+
47
+ // ログインボタンが押された場合
48
+
49
+ if (isset($_POST["login"])) {
50
+
51
+ // 1. ユーザIDの入力チェック
52
+
53
+ if (empty($_POST["userid"])) { // emptyは値が空のとき
54
+
55
+ $errorMessage = 'ユーザーIDが未入力です。';
56
+
57
+ } else if (empty($_POST["password"])) {
58
+
59
+ $errorMessage = 'パスワードが未入力です。';
60
+
61
+ }
62
+
63
+
64
+
65
+ if (!empty($_POST["userid"]) && !empty($_POST["password"])) {
66
+
67
+ // 入力したユーザIDを格納
68
+
69
+ $userid = $_POST["userid"];
70
+
71
+
72
+
73
+ // 2. ユーザIDとパスワードが入力されていたら認証する
74
+
75
+ $dsn = sprintf('mysql: host=%s; dbname=%s; charset=utf8', $db['host'], $db['dbname']);
76
+
77
+
78
+
79
+ // 3. エラー処理
80
+
81
+ try {
82
+
83
+ $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
84
+
85
+
86
+
87
+ $stmt = $pdo->prepare('SELECT * FROM userData WHERE name = ?');
88
+
89
+ $stmt->execute(array($userid));
90
+
91
+
92
+
93
+ $password = $_POST["password"];
94
+
95
+
96
+
97
+ if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
98
+
99
+ if (password_verify($password, $row['password'])) {
100
+
101
+ session_regenerate_id(true);
102
+
103
+
104
+
105
+ // 入力したIDのユーザー名を取得
106
+
107
+ $id = $row['id'];
108
+
109
+ $sql = "SELECT * FROM userData WHERE id = $id"; //入力したIDからユーザー名を取得
110
+
111
+ $stmt = $pdo->query($sql);
112
+
113
+ foreach ($stmt as $row) {
114
+
115
+ $row['name']; // ユーザー名
116
+
117
+ }
118
+
119
+ $_SESSION["NAME"] = $row['name'];
120
+
121
+ header("Location: Main.php"); // メイン画面へ遷移
122
+
123
+ exit(); // 処理終了
124
+
125
+ } else {
126
+
127
+ // 認証失敗
128
+
129
+ $errorMessage = 'ユーザーIDあるいはパスワードに誤りがあります。';
130
+
131
+ }
132
+
133
+ } else {
134
+
135
+ // 4. 認証成功なら、セッションIDを新規に発行する
136
+
137
+ // 該当データなし
138
+
139
+ $errorMessage = 'ユーザーIDあるいはパスワードに誤りがあります。';
140
+
141
+ }
142
+
143
+
144
+
145
+ } catch (PDOException $e) {
146
+
147
+ $errorMessage = 'データベースエラー';
148
+
149
+ //$errorMessage = $sql;
150
+
151
+ // $e->getMessage() でエラー内容を参照可能(デバッグ時のみ表示)
152
+
153
+ // echo $e->getMessage();
154
+
155
+ }
156
+
157
+ }
158
+
159
+ }
160
+
161
+
162
+
163
+ ?>
164
+
165
+
166
+
167
+
168
+
169
+ <form id="loginForm" name="loginForm" action="" method="POST">
170
+
171
+ <fieldset>
172
+
173
+ <div><font color="#ff0000"><?php echo htmlspecialchars($errorMessage, ENT_QUOTES); ?></font></div>
174
+
175
+ <label for="userid">ユーザーID</label><input type="text" id="userid" name="userid" placeholder="ユーザーIDを入力" value="<?php if (!empty($_POST["userid"])) {echo htmlspecialchars($_POST["userid"], ENT_QUOTES);} ?>">
176
+
177
+ <br>
178
+
179
+ <label for="password">パスワード</label><input type="password" id="password" name="password" value="" placeholder="パスワードを入力">
180
+
181
+ <br>
182
+
183
+ <input type="submit" id="login" name="login" value="ログイン">
184
+
185
+ </fieldset>
186
+
187
+ </form>
188
+
189
+ <br>
190
+
191
+ <form action="SignUp.php">
192
+
193
+
194
+
195
+
196
+
197
+ </form>
198
+
199
+ </div>
48
200
 
49
201
  </div>
50
202
 
51
- <div id="container">
52
-
53
- <div id="menu">
54
-
55
-
56
-
57
- <ul id="menuitem">
58
-
59
- <li><a href="top.php">TOP</a></li>
60
-
61
- <li><a href="student.php">STUDENT</a></li>
62
-
63
- <li><a href="parent.php">PARENT</a></li>
64
-
65
- <li><a href="teacher.php">TEACHER</a></li>
66
-
67
- <li><a href="new.php">NEW</a></li>
68
-
69
- </ul>
70
-
71
-
72
-
73
- </div>
74
-
75
- <div id="contents">
76
-
77
- <h1>LOGIN</h1>
78
-
79
- <?php
80
-
81
- session_start();
82
-
83
-
84
-
85
- $db['host'] = "localhost"; // DBサーバのURL
86
-
87
- $db['user'] = "suzuki"; // ユーザー名
88
-
89
- $db['pass'] = "love"; // ユーザー名のパスワード
90
-
91
- $db['dbname'] = "teacher"; // データベース名
92
-
93
- // エラーメッセージの初期化
94
-
95
- $errorMessage = "";
96
-
97
-
98
-
99
- // ログインボタンが押された場合
100
-
101
- if (isset($_POST["login"])) {
102
-
103
- // 1. ユーザIDの入力チェック
104
-
105
- if (empty($_POST["userid"])) { // emptyは値が空のとき
106
-
107
- $errorMessage = 'ユーザーIDが未入力です。';
108
-
109
- } else if (empty($_POST["password"])) {
110
-
111
- $errorMessage = 'パスワードが未入力です。';
112
-
113
- }
114
-
115
-
116
-
117
- if (!empty($_POST["userid"]) && !empty($_POST["password"])) {
118
-
119
- // 入力したユーザIDを格納
120
-
121
- $userid = $_POST["userid"];
122
-
123
-
124
-
125
- // 2. ユーザIDとパスワードが入力されていたら認証する
126
-
127
- $dsn = sprintf('mysql: host=%s; dbname=%s; charset=utf8', $db['host'], $db['dbname']);
128
-
129
-
130
-
131
- // 3. エラー処理
132
-
133
- try {
134
-
135
- $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
136
-
137
-
138
-
139
- $stmt = $pdo->prepare('SELECT * FROM userData WHERE name = ?');
140
-
141
- $stmt->execute(array($userid));
142
-
143
-
144
-
145
- $password = $_POST["password"];
146
-
147
-
148
-
149
- if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
150
-
151
- if (password_verify($password, $row['password'])) {
152
-
153
- session_regenerate_id(true);
154
-
155
-
156
-
157
- // 入力したIDのユーザー名を取得
158
-
159
- $id = $row['id'];
160
-
161
- $sql = "SELECT * FROM userData WHERE id = $id"; //入力したIDからユーザー名を取得
162
-
163
- $stmt = $pdo->query($sql);
164
-
165
- foreach ($stmt as $row) {
166
-
167
- $row['name']; // ユーザー名
168
-
169
- }
170
-
171
- $_SESSION["NAME"] = $row['name'];
172
-
173
- header("Location: Main.php"); // メイン画面へ遷移
174
-
175
- exit(); // 処理終了
176
-
177
- } else {
178
-
179
- // 認証失敗
180
-
181
- $errorMessage = 'ユーザーIDあるいはパスワードに誤りがあります。';
182
-
183
- }
184
-
185
- } else {
186
-
187
- // 4. 認証成功なら、セッションIDを新規に発行する
188
-
189
- // 該当データなし
190
-
191
- $errorMessage = 'ユーザーIDあるいはパスワードに誤りがあります。';
192
-
193
- }
194
-
195
-
196
-
197
- } catch (PDOException $e) {
198
-
199
- $errorMessage = 'データベースエラー';
200
-
201
- //$errorMessage = $sql;
202
-
203
- // $e->getMessage() でエラー内容を参照可能(デバッグ時のみ表示)
204
-
205
- // echo $e->getMessage();
206
-
207
- }
208
-
209
- }
210
-
211
- }
212
-
213
-
214
-
215
- ?>
216
-
217
-
218
-
219
-
220
-
221
- <form id="loginForm" name="loginForm" action="" method="POST">
222
-
223
- <fieldset>
224
-
225
- <div><font color="#ff0000"><?php echo htmlspecialchars($errorMessage, ENT_QUOTES); ?></font></div>
226
-
227
- <label for="userid">ユーザーID</label><input type="text" id="userid" name="userid" placeholder="ユーザーIDを入力" value="<?php if (!empty($_POST["userid"])) {echo htmlspecialchars($_POST["userid"], ENT_QUOTES);} ?>">
228
-
229
- <br>
230
-
231
- <label for="password">パスワード</label><input type="password" id="password" name="password" value="" placeholder="パスワードを入力">
232
-
233
- <br>
234
-
235
- <input type="submit" id="login" name="login" value="ログイン">
236
-
237
- </fieldset>
238
-
239
- </form>
240
-
241
- <br>
242
-
243
- <form action="SignUp.php">
244
-
245
-
246
-
247
-
248
-
249
- </form>
250
-
251
- </div>
203
+ <div id="footer">
204
+
205
+
252
206
 
253
207
  </div>
254
208
 
255
- <div id="footer">
256
-
257
-
258
-
259
- </div>
260
-
261
209
  </div>
262
210
 
263
211
  </body>