因為在練習 PHP 的登入註冊系統,所以嘗試用雜湊的方式來實作。目前的問題是:把密碼存進資料庫後,登入時撈出密碼,使用 password_verify 驗證不管怎樣都是返回 False....下面是程式碼,麻煩各位大大解救
拿到註冊密碼後使用雜湊,並加入資料庫
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 ...
已解決,在其他頁面的變數名字寫錯了