私はpassword_hashを使用してデータベースに挿入するためのパスワードを暗号化しています。それは作業が、私は常に暗号化された値が同じであっても、falseを返すされていることを確認するためにpassword_verify
を使用するときにここで password_verifyがtrueを返さない
if ($_POST['submit']) {
$dbh = new PDO("mysql:dbname=pass;host=localhost", "root", "");
$select = $dbh->query("SELECT username, password FROM passwords WHERE username = " . $dbh->quote($_POST['username']));
$fetch = $select->fetch(PDO::FETCH_ASSOC);
if (password_verify($fetch['password'], password_hash($_POST['password'], PASSWORD_BCRYPT))) {
echo 'Welcome! ' . $fetch['username'] . " your password is " . $fetch['password'];
} else {
echo "no";
}
}
暗号化されたパスワードでのデータベースは、私が足りない
$ 2Y $ 10 $ dMXgvPo5j9.8gaSqgtxTSevlFCsJwdSn8vdLbqFirUQcFvzfk0or2
です何か?私はPHP(hash()
)で異なるハッシュ関数を使用しています。だから、なぜこれが動作しないのか混乱しています。挿入されたパスワードはデータベースで暗号化されていますpassword_hash($password, PASSWORD_BCRYPT)
助けていただければ幸いです。
に変更し;' - [ドキュメント](HTTPを参照してください://php.net/manual/en/function.password-verify.php) - あなたの特定のコードでは、 'password_verify($ _ POST ['password']、$ fetch ['password'])となります。 ' – Qirel
$ _POST ['pa ssword ']はハッシュされていません。 – user2101411
マニュアルではstring_password、intのアルゴリズムでpassword_hash()と書いていますので、何を言っていますか? – user2101411