iT邦幫忙

0

PHP 的 password_verify 驗證失敗

  • 分享至 

  • xImage

因為在練習 PHP 的登入註冊系統,所以嘗試用雜湊的方式來實作。目前的問題是:把密碼存進資料庫後,登入時撈出密碼,使用 password_verify 驗證不管怎樣都是返回 False....下面是程式碼,麻煩各位大大解救
/images/emoticon/emoticon02.gif

拿到註冊密碼後使用雜湊,並加入資料庫

public function register($account, $password){
    $hash_password = password_hash($password, PASSWORD_DEFAULT);

    $mysqlRequest = "INSERT INTO users(`account`, `password`) VALUES(:account, :password);";

    $statement = $this->pdo->prepare($mysqlRequest);
    $statement->execute(array(
      'account' => $account,
      'password' => $hash_password,
    ));
}

登入時撈出密碼,使用 password_verify 進行比對

public function logIn($account, $password){
    $mysqlRequest = "SELECT account,`password` FROM users WHERE account = :account ";

    $statement = $this->pdo->prepare($mysqlRequest);
    $statement->execute(array(
      'account' => $account,
    ));
    $hash = $statement->fetch(PDO::FETCH_ASSOC)["password"];

    if(password_verify($password, $hash)){
      echo "登入成功";
    }else{
      echo "登入失敗";
    }

資料庫中的密碼型別為 VARCHAR 長度255
實在不清楚為什麼會回傳 False ...


已解決,在其他頁面的變數名字寫錯了
/images/emoticon/emoticon04.gif

gmlin iT邦新手 5 級 ‧ 2022-01-19 10:11:29 檢舉
SQL Injection....
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答