password_verify が False を返すのはなぜですか?
以下に示すように、PHP のpassword_verify 関数を使用してパスワードを検証しようとすると、false が返されることがあります。肯定的な点:
if (password_verify($_POST['user_password'], $result_row->user_password_hash)) { // ... }
原因:
問題は、データベース内のパスワード ハッシュ列の長さに起因している可能性があります。 PHP マニュアルによると、パスワード ハッシュは少なくとも 255 文字を収容できる列に保存することが推奨されています。これにより、長さに敏感であることで知られる bcrypt アルゴリズムとの互換性が確保されます。
解決策:
データベース内のパスワード ハッシュ列の長さを少なくとも 255 に拡張します。文字。これを行うには、以下に示すようにデータベース スキーマを適宜変更します。
ALTER TABLE users MODIFY COLUMN user_password_hash VARCHAR(255);
これにより、password_verify が保存されているハッシュと比較してパスワードを正確に検証できるようになります。
以上がPHP で「password_verify」が False を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。