これまでの私の理解から (少なくとも私はそう思います)、 password_hash() 関数は、使用中のアルゴリズム、コスト、ソルトに基づいてハッシュを生成します。password_verify は、egpassword_hash($pass, PASSWORD_BCRYPT, array('cost'=>10))
から提供された情報を使用して、検証に必要なすべての情報が含まれているため、返された値が true か false かを確認します。
以前使っていた
$SQL_Query = "SELECT * FROM DB_Table WHERE userName = '".$username."'" AND password = $ID;
これはプレーンテキストで保存されているため機能し、true を返す可能性がありますが、論理的には今回は機能しません。
次のような説明で静的パスワードを使用する同様の質問に出くわしました
<?php
$to_verify = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';
if (password_verify('rasmuslerdorf', $to_verify))
{
echo 'Password is valid!';
} else
{
echo 'Wrong password.';
}
私が理解に苦しんでいる概念は、パスワード入力がその時点でページに知られているのではなく、データベースに保存されている場合、パスワード入力をハッシュ値と照合する方法です? 私は最近、私の愚かなエラーである値の保存に関して助けを得ましたが、これは私が望んでいたほどうまくクリックしていないと思います。