プロが教える店舗&オフィスのセキュリティ対策術

DBのハッシュ化したパスワードをpassword_verifyしたのですが上手くいかず、何度やってもログイン認証に失敗しました。となってしまいます。
どこが、間違っているかいるか教えて下さい。
テーブル名も合っており値もきちんと渡ってきています。

<?php
session_start();
$code =$_SESSION['code'];
$pass =$_SESSION['pass'];

try {
$pdo = new PDO('mysql:host=localhost;dbname=shop;charset=utf8','省略','省略');
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

$sql='SELECT *FROM mst_staff WHERE code=?';
$stmt=$pdo->prepare($sql);
$stmt->bindValue(1,$code,PDO::PARAM_INT);
$stmt->execute();

$pdo=null;

$result = $stmt->fetch(PDO::FETCH_ASSOC);

if(password_verify($pass, $result['password']??"")){

echo "ログイン認証に成功しました";
header('Location:staff_top.php');
exit();
}else{
echo "ログイン認証に失敗しました";
echo '<form>';
echo '<input type ="button" onclick ="history.back()" value ="戻る">';
echo '</form>';
}

}catch(Exception $e){

echo 'エラー発生';
exit();
}
?>
宜しくお願いします。

質問者からの補足コメント

  • 違う画面でパスワードを登録する画面を作りまして、そこでpassword_hash() を使っており、今回はログインで入力されたパスワードの照合をpassword_verifyでしたいのですが、正しいパスワードを入れてもログイン認証に失敗しました。となってしまいます。

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/02/06 13:49

A 回答 (2件)

$passの値が生パスワードじゃないとか、登録した生パスワードが違ってるとか、DBに突っ込んだ時点で文字が切れたりとかしてないです

か?
    • good
    • 0

DBに格納されているパスワード文字列が password_hash() から生成されたものではないのではないですか?

この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!