質問するログイン新規登録

質問編集履歴

3

追記

2016/07/12 15:42

投稿

earnest_gay
earnest_gay

スコア615

title CHANGED
File without changes
body CHANGED
@@ -60,4 +60,36 @@
60
60
  ```ここに言語を入力
61
61
  $LoginCheck = new LoginCheck();
62
62
  $errMsg=$LoginCheck->collation(h(filter_input(INPUT_POST,'email')),h(filter_input(INPUT_POST,'password')));
63
- ```
63
+ ```
64
+
65
+
66
+ ---
67
+
68
+ ↓これで試したらtrueになります。
69
+ ```ここに言語を入力
70
+ $raw = h(filter_input(INPUT_POST,'email'));
71
+
72
+ // パスワードの Blowfish ハッシュをとる
73
+ $hashed = password_hash($raw, PASSWORD_DEFAULT, array('cost' => 10));
74
+
75
+ // パスワードを検証する
76
+ if (password_verify($raw, $hashed)) {
77
+ echo '正しいパスワードです';
78
+ } else {
79
+ echo 'パスワードが間違っています';
80
+ }
81
+ ```
82
+
83
+ 私が試しているのは
84
+ とりあえず該当のDB空にする。
85
+
86
+ メール:abcd1234@test
87
+ パス:Abcd1234
88
+
89
+ ↑これをDBへ登録する。
90
+ その際ハッシュ化されたパスがDBへ登録される。
91
+
92
+
93
+ var_dump(password_verify(Abcd1234,そのハッシュ化されたパス));
94
+
95
+ これでfalseになります...

2

追記

2016/07/12 15:42

投稿

earnest_gay
earnest_gay

スコア615

title CHANGED
File without changes
body CHANGED
@@ -13,4 +13,51 @@
13
13
 
14
14
  結果:bool(false)
15
15
 
16
- password_verifyは使えなくなったのでしょうか?
16
+ password_verifyは使えなくなったのでしょうか?
17
+
18
+
19
+
20
+
21
+ ◆ユーザー登録時のexecuteではこやってハッシュ化しています。
22
+ password_hash(filter_input(INPUT_POST,'pw_conf'),PASSWORD_DEFAULT, array('cost' => 10)),
23
+
24
+ ◆ログイン時のチェックです。
25
+
26
+ ```ここに言語を入力
27
+ <?php
28
+ class LoginCheck extends Connection{
29
+
30
+ private $error = array();
31
+
32
+ public function collation($email,$password){
33
+
34
+ $sql = "SELECT * FROM user_data WHERE email = ? ";
35
+ $stmt = $this->pdo->prepare($sql);
36
+ $stmt->execute([
37
+ $email,
38
+ ]);
39
+ $hitdata =$stmt->fetch();
40
+
41
+ if(!empty($_POST['login'])){
42
+ if(isset($email) && isset($password)) {
43
+
44
+ if($email === $hitdata['email'] && password_verify($password,$hitdata['password']) ){
45
+ $_SESSION['id'] = $hitdata['id'];
46
+ header('Location:mypage.php');
47
+ } else {
48
+ $this->error['email'] = "パスワードかアドレスが正しくありません。".'<br /><br />';
49
+ }
50
+ }
51
+ }
52
+ return $this->error;
53
+ }
54
+ }
55
+ ?>
56
+ ```
57
+
58
+ ログイン画面で上のクラスを呼び出しています。
59
+
60
+ ```ここに言語を入力
61
+ $LoginCheck = new LoginCheck();
62
+ $errMsg=$LoginCheck->collation(h(filter_input(INPUT_POST,'email')),h(filter_input(INPUT_POST,'password')));
63
+ ```

1

具体化

2016/07/12 15:23

投稿

earnest_gay
earnest_gay

スコア615

title CHANGED
File without changes
body CHANGED
@@ -9,7 +9,7 @@
9
9
  生パス:Abcd1234
10
10
  生成されたハッシュパス:$2y$10$kUYNSPUeViFxebLT/zADleSyEbxXLsDowhCavYpyPbl
11
11
 
12
- var_dump(password_verify("Abcd1234","$2y$10$kUYNSPUeViFxebLT/zADleSyEbxXLsDowhCavYpyPbl"));
12
+ var_dump(password_verify("Abcd1234",'$2y$10$kUYNSPUeViFxebLT/zADleSyEbxXLsDowhCavYpyPbl'));
13
13
 
14
14
  結果:bool(false)
15
15