質問編集履歴

4

追記

2019/04/26 06:04

投稿

toll_tree
toll_tree

スコア199

test CHANGED
File without changes
test CHANGED
@@ -210,6 +210,116 @@
210
210
 
211
211
  ```
212
212
 
213
+ 下記は、shop_class.phpです
214
+
215
+ ```php
216
+
217
+
218
+
219
+ <?php
220
+
221
+
222
+
223
+ class Shop
224
+
225
+ {
226
+
227
+
228
+
229
+ private $dbh;
230
+
231
+
232
+
233
+ public function __construct($dsn,$user,$password){
234
+
235
+ $dbh = new PDO($dsn,$user,$password);
236
+
237
+ $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
238
+
239
+ $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
240
+
241
+ $this->dbh = $dbh;
242
+
243
+ }
244
+
245
+
246
+
247
+ public function h($str){
248
+
249
+ return htmlspecialchars($str,ENT_QUOTES,'UTF-8');
250
+
251
+ }
252
+
253
+
254
+
255
+ public function write($user_name,$password){
256
+
257
+
258
+
259
+ $stmt = $this->dbh->prepare("INSERT INTO user(user_name,password,created_at)VALUES(:user_name,:password,now())");
260
+
261
+ $stmt->bindValue(':user_name',$user_name,PDO::PARAM_STR);
262
+
263
+ $stmt->bindValue(':password',$password,PDO::PARAM_STR);
264
+
265
+ $stmt->execute();
266
+
267
+
268
+
269
+
270
+
271
+ }
272
+
273
+
274
+
275
+ public function user_check($user_name){
276
+
277
+ $stmt = $this->dbh->prepare("SELECT user_name FROM user WHERE user_name = :user_name");
278
+
279
+ $stmt->bindValue(':user_name',$user_name,PDO::PARAM_STR);
280
+
281
+ $stmt->execute();
282
+
283
+ $result = $stmt->fetchALL(PDO::FETCH_ASSOC);
284
+
285
+ if(count($result) > 0){
286
+
287
+ return '同じユーザー名が既に登録されています';
288
+
289
+ }
290
+
291
+ return 'ok';
292
+
293
+
294
+
295
+ }
296
+
297
+
298
+
299
+ public function login_check($user_name){
300
+
301
+ $stmt = $this->dbh->prepare(" SELECT user_name,password FROM user WHERE user_name = :user_name ");
302
+
303
+ $stmt->bindValue(':user_name',$user_name,PDO::PARAM_STR);
304
+
305
+ $stmt->execute();
306
+
307
+ $user_info = $stmt->fetchALL(PDO::FETCH_ASSOC);
308
+
309
+ return $user_info;
310
+
311
+
312
+
313
+ }
314
+
315
+
316
+
317
+ }
318
+
319
+ ```
320
+
321
+ ```
322
+
213
323
  以下はエラーの内容になります。
214
324
 
215
325
  「Notice: Undefined index: password in C:\xampp\xampp\htdocs\ec_website\login.php on line 28」

3

文法修正

2019/04/26 06:04

投稿

toll_tree
toll_tree

スコア199

test CHANGED
File without changes
test CHANGED
@@ -217,3 +217,33 @@
217
217
 
218
218
 
219
219
  追記です。$user_infoの中身なのですが、$user_info = $shop->login_check($user_name);ここの時点では、キー「password」及び「user_name」は存在しています。
220
+
221
+
222
+
223
+ 追記です。
224
+
225
+ ```
226
+
227
+ $user_info = $shop->login_check($user_name);
228
+
229
+ var_dump($user_info);
230
+
231
+
232
+
233
+ if(count($user_info) > 0){
234
+
235
+
236
+
237
+ var_dump($user_info);
238
+
239
+ if(password_verify($password,$user_info['password'])){
240
+
241
+ ```
242
+
243
+ 上記の、「$user_info」の返り値は、上から、「array(1) { [0]=> array(2) { ["user_name"]=> string(7) "yamada1" ["password"]=> string(60) "$2y$10$wVmi2NTWAK857dsfUTIG1O5r0krEMP2m1yfVH6MXva1XJbJbtH3my" } }」
244
+
245
+
246
+
247
+ その下のvar_dumpの結果は、「array(1) { [0]=> array(2) { ["user_name"]=> string(7) "yamada1" ["password"]=> string(60) "$2y$10$wVmi2NTWAK857dsfUTIG1O5r0krEMP2m1yfVH6MXva1XJbJbtH3my" } }」
248
+
249
+ です。

2

追記です

2019/04/26 05:54

投稿

toll_tree
toll_tree

スコア199

test CHANGED
File without changes
test CHANGED
@@ -213,3 +213,7 @@
213
213
  以下はエラーの内容になります。
214
214
 
215
215
  「Notice: Undefined index: password in C:\xampp\xampp\htdocs\ec_website\login.php on line 28」
216
+
217
+
218
+
219
+ 追記です。$user_infoの中身なのですが、$user_info = $shop->login_check($user_name);ここの時点では、キー「password」及び「user_name」は存在しています。

1

修正

2019/04/26 05:22

投稿

toll_tree
toll_tree

スコア199

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- password_verifyによる認証に失敗してしまった場合、Noticeエラーが出てしまいます。今までは、そのよう表示が出なかった為原因が分からな、ご助言きたいです。
1
+ password_verifyによる認証に失敗してしまった場合、Noticeエラーが出てしまいます。今までは、認証に失敗してもNoticeエラーとはらず、falseとなるだけでした。Noticeエラーが出てしまう理由が分からないため、ご教示ければ幸いです。
2
2
 
3
3
  該当のコードは、以下のlogin.phpです。
4
4