0
でパスワードを確認することはできません、私は、ユーザーが通常いかなる誤りまたはなしでログインし、ログイン時にパスワードは、このプロジェクトではPHP
オフハッシュを作るためにbcryptのを使用しますが、変更しようとしたときましたあなたのパスワード、現在のパスワードはここで、データベースのパスワードを使用してマッチ(もちろん私は2つのパスワードを確認するためにpassword_verify()
を使用しています)
は、私のコードのスニペットではありません。
$option = ['cost' => 12];
$password = password_hash($_currentpassword, PASSWORD_BCRYPT, $option);
$selectpasswordsql = "SELECT `password` FROM `auth` WHERE username=?";
$selectpasswordstmt = $conn->prepare($selectpasswordsql);
$selectpasswordstmt->execute(array($_SESSION['account']['username']));
$selectpasswordresults = $selectpasswordstmt->fetch(PDO::FETCH_ASSOC);
$databasepass = $selectpasswordresults['password'];
$databasepass = trim($databasepass);
if(password_verify($password,$databasepass)){
if(empty($passmsgs)){
$updatepasssql = "UPDATE `auth` SET
`password`=?
WHERE username=?
";
$updatepassstmt = $conn->prepare($updatepasssql);
$updatepassstmt->execute(array($password, $_SESSION['account']['username']));
if($updatepassstmt){
array_push($passmsgs, 'Successfully updating your password!');
} else {
array_push($passmsgs, 'There was a problem executing your command!');
}
}
} else {
array_push($passmsgs, 'Your current password is wrong!');
}
これを試すには、パスワード
編集で現在のパスワードと一致しないのエラーが発生します:はい、私は
編集2の最大の長さとVARCHAR
を使用しています:私のコードの完全なコピーにはlinkがあります。
password_verifyは私の 'current_password'をハッシュしますので、本当に必要です。なぜあなたはそれが必要ではないと思いますか? – astronomicalXoom
私は自分のコード全体を見るためのリンクを追加しました。もしあなたが – astronomicalXoom
の 'password_varify'を実行する必要があるなら、それをチェックしてください。パスワードを外部からハッシュする必要はありません。 DBからユーザーが入力したパスワードと古いパスワードを渡すだけで動作します。 more:[password_varify](http://php.net/manual/en/function.password-verify.php) –