質問編集履歴

2

追記しました

2021/06/01 00:45

投稿

Nanmotsu
Nanmotsu

スコア22

test CHANGED
File without changes
test CHANGED
@@ -145,3 +145,157 @@
145
145
  ```
146
146
 
147
147
  を入れると、exception not occurredが表示されます。
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+ 追記2
156
+
157
+
158
+
159
+ ```php
160
+
161
+ <?php
162
+
163
+
164
+
165
+
166
+
167
+ function h($str)
168
+
169
+ {
170
+
171
+ return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
172
+
173
+ }
174
+
175
+
176
+
177
+ session_start();
178
+
179
+ $name = $_POST['name'];
180
+
181
+ $dsn = "mysql:host=localhost; dbname=login_test; charset=utf8";
182
+
183
+ $username = "※※※※※※";
184
+
185
+ $password = "※※※※※※";
186
+
187
+ try {
188
+
189
+ $dbh = new PDO($dsn, $username, $password,
190
+
191
+ [
192
+
193
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
194
+
195
+ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
196
+
197
+ ]);
198
+
199
+ }
200
+
201
+ catch (PDOException $e) {
202
+
203
+ echo "in catch clause<br>";
204
+
205
+ exit($e->getMessage());
206
+
207
+ }
208
+
209
+ echo "exception not occurred<br>";
210
+
211
+ var_dump($dbh);
212
+
213
+ var_dump($e);
214
+
215
+
216
+
217
+
218
+
219
+ $sql = "SELECT * FROM users WHERE name = :name";
220
+
221
+ $stmt = $dbh->prepare($sql);
222
+
223
+ $stmt->bindValue(':name', $name);
224
+
225
+ $stmt->execute();
226
+
227
+ $member = $stmt->fetch(); //配列で取得
228
+
229
+
230
+
231
+ if (password_verify($_POST['num'], $member['num'])) {
232
+
233
+ //DBのユーザー情報をセッションに保存
234
+
235
+ $_SESSION['name'] = $member['name'];
236
+
237
+ $_SESSION['num'] = $member['num'];
238
+
239
+ $msg = 'ログインしました。';
240
+
241
+ $link = '<a href="index.php">ホーム</a>';
242
+
243
+ } else {
244
+
245
+ $msg = '名前もしくはパスワードが間違っています。';
246
+
247
+ $link = '<a href="index.php">戻る</a>';
248
+
249
+ }
250
+
251
+ ?>
252
+
253
+
254
+
255
+
256
+
257
+ <!DOCTYPE html>
258
+
259
+ <html lang="ja">
260
+
261
+ <head>
262
+
263
+ <meta charset="utf-8">
264
+
265
+ <link rel="icon" href="favicon.ico">
266
+
267
+ <link rel="stylesheet" href="css/practicestyle.css">
268
+
269
+ <title>login</title>
270
+
271
+ </head>
272
+
273
+
274
+
275
+ <body>
276
+
277
+
278
+
279
+
280
+
281
+ <h1><?= h($msg); ?></h1>
282
+
283
+ <?php echo $link; ?>
284
+
285
+
286
+
287
+ </body>
288
+
289
+ </html>
290
+
291
+
292
+
293
+ ```
294
+
295
+
296
+
297
+ が全コードとなります。
298
+
299
+
300
+
301
+ var_dump($dbh);で「object(PDO)#1 (0) { }」と表示されます。

1

情報の追加

2021/06/01 00:45

投稿

Nanmotsu
Nanmotsu

スコア22

test CHANGED
File without changes
test CHANGED
@@ -57,3 +57,91 @@
57
57
 
58
58
 
59
59
  つたない質問で申し訳ありませんが、ご教授いただけると助かります。
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+ 情報不足ですみません。
72
+
73
+
74
+
75
+ ・phpと同じサーバなのか(コード内でlocalhostを指定しているので同じであると予想)
76
+
77
+ →VPSに登録して、CENTOS7、APACHE、MariaDB、phpを入れていますので、同じサーバ―だと思います。
78
+
79
+
80
+
81
+ ・ソフトウェアは何か
82
+
83
+ →MariaDBです
84
+
85
+
86
+
87
+ ・バージョン
88
+
89
+ 「mysql --version」で以下が表示されました。
90
+
91
+ Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64) using readline 5.1
92
+
93
+ です。
94
+
95
+
96
+
97
+ ・DBは起動しているか
98
+
99
+ 「systemctl status maridb」で
100
+
101
+ active(running)と表示されました。
102
+
103
+
104
+
105
+ ・作成したデータベースは何か(コード内で指定しているlogin_testと予想)
106
+
107
+ はい。login_testです。
108
+
109
+
110
+
111
+ ・ユーザは作成したのか。権限付与したのか
112
+
113
+ mariadbのほうでユーザーを作成して、login_testにのみ権限付与しました。
114
+
115
+
116
+
117
+ ・phpではなく、データベースのコマンド操作で同じ結果を得られているのか
118
+
119
+ mariadb内でDB作成しましたので、そのあたりは大丈夫と思います。
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+ また、
132
+
133
+ ```php
134
+
135
+ } catch (PDOException $e) {
136
+
137
+ echo "in catch clause<br>";
138
+
139
+ exit($e->getMessage());
140
+
141
+ }
142
+
143
+ echo "exception not occurred<br>";
144
+
145
+ ```
146
+
147
+ を入れると、exception not occurredが表示されます。