質問編集履歴

3

追記

2016/07/12 15:42

投稿

earnest_gay
earnest_gay

スコア615

test CHANGED
File without changes
test CHANGED
@@ -123,3 +123,67 @@
123
123
  $errMsg=$LoginCheck->collation(h(filter_input(INPUT_POST,'email')),h(filter_input(INPUT_POST,'password')));
124
124
 
125
125
  ```
126
+
127
+
128
+
129
+
130
+
131
+ ---
132
+
133
+
134
+
135
+ ↓これで試したらtrueになります。
136
+
137
+ ```ここに言語を入力
138
+
139
+ $raw = h(filter_input(INPUT_POST,'email'));
140
+
141
+
142
+
143
+ // パスワードの Blowfish ハッシュをとる
144
+
145
+ $hashed = password_hash($raw, PASSWORD_DEFAULT, array('cost' => 10));
146
+
147
+
148
+
149
+ // パスワードを検証する
150
+
151
+ if (password_verify($raw, $hashed)) {
152
+
153
+ echo '正しいパスワードです';
154
+
155
+ } else {
156
+
157
+ echo 'パスワードが間違っています';
158
+
159
+ }
160
+
161
+ ```
162
+
163
+
164
+
165
+ 私が試しているのは
166
+
167
+ とりあえず該当のDB空にする。
168
+
169
+
170
+
171
+ メール:abcd1234@test
172
+
173
+ パス:Abcd1234
174
+
175
+
176
+
177
+ ↑これをDBへ登録する。
178
+
179
+ その際ハッシュ化されたパスがDBへ登録される。
180
+
181
+
182
+
183
+
184
+
185
+ var_dump(password_verify(Abcd1234,そのハッシュ化されたパス));
186
+
187
+
188
+
189
+ これでfalseになります...

2

追記

2016/07/12 15:42

投稿

earnest_gay
earnest_gay

スコア615

test CHANGED
File without changes
test CHANGED
@@ -29,3 +29,97 @@
29
29
 
30
30
 
31
31
  password_verifyは使えなくなったのでしょうか?
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+ ◆ユーザー登録時のexecuteではこやってハッシュ化しています。
42
+
43
+ password_hash(filter_input(INPUT_POST,'pw_conf'),PASSWORD_DEFAULT, array('cost' => 10)),
44
+
45
+
46
+
47
+ ◆ログイン時のチェックです。
48
+
49
+
50
+
51
+ ```ここに言語を入力
52
+
53
+ <?php
54
+
55
+ class LoginCheck extends Connection{
56
+
57
+
58
+
59
+ private $error = array();
60
+
61
+
62
+
63
+ public function collation($email,$password){
64
+
65
+
66
+
67
+ $sql = "SELECT * FROM user_data WHERE email = ? ";
68
+
69
+ $stmt = $this->pdo->prepare($sql);
70
+
71
+ $stmt->execute([
72
+
73
+ $email,
74
+
75
+ ]);
76
+
77
+ $hitdata =$stmt->fetch();
78
+
79
+
80
+
81
+ if(!empty($_POST['login'])){
82
+
83
+ if(isset($email) && isset($password)) {
84
+
85
+
86
+
87
+ if($email === $hitdata['email'] && password_verify($password,$hitdata['password']) ){
88
+
89
+ $_SESSION['id'] = $hitdata['id'];
90
+
91
+ header('Location:mypage.php');
92
+
93
+ } else {
94
+
95
+ $this->error['email'] = "パスワードかアドレスが正しくありません。".'<br /><br />';
96
+
97
+ }
98
+
99
+ }
100
+
101
+ }
102
+
103
+ return $this->error;
104
+
105
+ }
106
+
107
+ }
108
+
109
+ ?>
110
+
111
+ ```
112
+
113
+
114
+
115
+ ログイン画面で上のクラスを呼び出しています。
116
+
117
+
118
+
119
+ ```ここに言語を入力
120
+
121
+ $LoginCheck = new LoginCheck();
122
+
123
+ $errMsg=$LoginCheck->collation(h(filter_input(INPUT_POST,'email')),h(filter_input(INPUT_POST,'password')));
124
+
125
+ ```

1

具体化

2016/07/12 15:23

投稿

earnest_gay
earnest_gay

スコア615

test CHANGED
File without changes
test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
 
22
22
 
23
- var_dump(password_verify("Abcd1234","$2y$10$kUYNSPUeViFxebLT/zADleSyEbxXLsDowhCavYpyPbl"));
23
+ var_dump(password_verify("Abcd1234",'$2y$10$kUYNSPUeViFxebLT/zADleSyEbxXLsDowhCavYpyPbl'));
24
24
 
25
25
 
26
26