-1
我試圖使password_verify匹配數據庫中的crypt密碼,但我遇到了問題,它似乎不匹配。密碼驗證bcrypt,似乎無法匹配數據庫
我已經搜索了這個,我發現我需要使用最大長度爲255的VARCHAR,但仍然無法正常工作。
下面是代碼:
if(isset($_POST['bG9n']) && "bG9naW4") {
$email = $_POST['email'];
$pass= $_POST['pass'];
if($pass) {
$crypt = password_hash($pass,PASSWORD_BCRYPT);
$decrypt = password_verify($pass,$crypt);
}
if(password_verify($pass,$crypt)) {
echo "Sucess"; // It does echo Sucess
}
if (!empty($email) && !empty($pass) && filter_var($email,FILTER_VALIDATE_EMAIL) && password_verify($pass,$crypt)) {
$sql = "SELECT email, pass FROM clientes WHERE email ='$email' AND pass = '$decrypt' ";
$query = $DB_con->prepare($sql);
$query->execute();
$count = $query->rowCount();
if($count == 1){
$_SESSION['email'] = $email;
$_SESSION['pass'] = $decrypt;
header("Location: home.php");
}
else {
echo "<BR>Error";
}
}
也許是一個簡單的辦法,但我似乎無法找到什麼是錯的。
謝謝大家提前。
我建議你閱讀[文件](http://php.net/password)。這看起來很不對。例如。你怎麼知道password_verify返回一個未加密的密碼我不知道。 –
你會以錯誤的方式去做。你試圖檢查'$ decrypt = password_verify($ pass,$ crypt);'在你的查詢中'AND pass ='$ decrypt''並使用太多的'password_verify()'。 –