質問編集履歴

1

ソースコードの貼り付け

2017/03/04 06:08

投稿

chokochokochok
chokochokochok

スコア46

test CHANGED
File without changes
test CHANGED
@@ -23,3 +23,209 @@
23
23
  大変申し訳ございませんがここからどこを確認すれば良いのでしょうか?
24
24
 
25
25
  ご教授お願いいたします。
26
+
27
+ ```ここに言語を入力
28
+
29
+ <?php
30
+
31
+ session_start();
32
+
33
+
34
+
35
+ if(isset($_POST['soushin'])){
36
+
37
+
38
+
39
+ //ログイン名が入力されていない場合の処理
40
+
41
+ if (empty($_POST["name"])) {
42
+
43
+ $errorMessage = "名前が未入力です。";
44
+
45
+ }
46
+
47
+ //パスワードが入力されていない場合の処理
48
+
49
+ else if (empty($_POST["pass"])) {
50
+
51
+ $errorMessage = "パスワードが未入力です。";
52
+
53
+ }
54
+
55
+
56
+
57
+ //両方共入力されているか判別してログイン処理開始!!
58
+
59
+ if (!empty($_POST["name"]) && !empty($_POST["pass"])) {
60
+
61
+ $host = "localhost";
62
+
63
+ $db_name ="blueBlog"; //作ったデータベース名を入れる
64
+
65
+ $dsn = "mysql:dbname=$db_name;host=$host;charset=utf8";
66
+
67
+ $user = 'root'; //xampやmampなら初期値は"root"
68
+
69
+ $password = 'root'; //xampやmampなら初期値は"root"
70
+
71
+ try {
72
+
73
+ $dbh = new PDO($dsn, $user, $password);
74
+
75
+ }
76
+
77
+ catch (PDOException $e){
78
+
79
+ die('Error'.$e->getMessage());
80
+
81
+ }
82
+
83
+
84
+
85
+
86
+
87
+ //ログイン名とパスワードのエスケープ処理
88
+
89
+ $name = htmlspecialchars($_POST['name'],ENT_QUOTES);
90
+
91
+ $pass = htmlspecialchars($_POST['pass'],ENT_QUOTES);
92
+
93
+
94
+
95
+ //データベースアクセスの処理文章。ログイン名があるか判定
96
+
97
+ $query = "select * from user where name like '%".$name."%' ";
98
+
99
+
100
+
101
+ //$dbhは最初に設定したデータベースアクセスの変数です。
102
+
103
+ $result = $dbh->query($query);
104
+
105
+
106
+
107
+ //データベースにアクセス出来なかった場合の処理
108
+
109
+ if (!$result) {
110
+
111
+ print('クエリーが失敗しました。' . $dbh->error);
112
+
113
+ $dbh->close();
114
+
115
+ exit();
116
+
117
+ }
118
+
119
+
120
+
121
+ $ryou = $result->rowCount();
122
+
123
+
124
+
125
+ //1以上あればデータがあるということなので、判定に使用しています
126
+
127
+ if ($ryou>=1) {
128
+
129
+
130
+
131
+ while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
132
+
133
+
134
+
135
+ $db_hashed_pwd = $row['password'];
136
+
137
+ }
138
+
139
+ PASSWORD_DEFAULT);
140
+
141
+
142
+
143
+ if (password_verify($_POST["pass"], $db_hashed_pwd)) {
144
+
145
+ session_regenerate_id(true);
146
+
147
+ $_SESSION["login"] = session_id();
148
+
149
+ $_SESSION["loginname"] = $name;
150
+
151
+
152
+
153
+ //ログイン後のphpを読み込ませます。
154
+
155
+ header("Location: list.php");
156
+
157
+ exit;
158
+
159
+
160
+
161
+ }
162
+
163
+ //パスワードが違ってた時の処理
164
+
165
+ else {
166
+
167
+ $errorMessage = "パスワードに誤りがあります。";
168
+
169
+ }
170
+
171
+ }
172
+
173
+ //ログイン名がなかった時の処理
174
+
175
+ else {
176
+
177
+ $errorMessage = "ユーザが登録されていません。";
178
+
179
+ }
180
+
181
+ }
182
+
183
+ }
184
+
185
+ ?>
186
+
187
+ <!doctype html>
188
+
189
+ <html lang="ja">
190
+
191
+ <head>
192
+
193
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
194
+
195
+ <title>ログインページ</title>
196
+
197
+ </head>
198
+
199
+ <body>
200
+
201
+ <h2>ログイン画面</h2>
202
+
203
+
204
+
205
+ <form method="post" action="<?php print($_SERVER['PHP_SELF']) ?>">
206
+
207
+ 名前:<input type="text" name="name" size="15"><br><br>
208
+
209
+ パスワード:<input type="text" name="pass" size="15"><br><br>
210
+
211
+ <input type="submit" name="soushin" value="ログイン">
212
+
213
+ <input type="submit" name="kuria" value="クリア">
214
+
215
+ </form>
216
+
217
+ <br>
218
+
219
+ <br>
220
+
221
+ <div><?php echo $errorMessage ?></div>
222
+
223
+ <br>
224
+
225
+ <br>
226
+
227
+ </body>
228
+
229
+ </html>
230
+
231
+ ```