我正在使用password_compat.php来使用password_hash和password_verify函数。我正在使用河豚alogrithm。 password_verify似乎不起作用,它不匹配数据库中存储的哈希。我是否必须使用password_verify指定算法或盐?
reigster脚本:
$hash = password_hash($pass, PASSWORD_BCRYPT);
$qry = "INSERT INTO users (email, fname, lname, gender, p4s5) VALUES ('$email', '$fname', '$lname', '$gender', '$hash')";
$result = mysqli_query($dblink, $qry) or die(mysqli_error($dblink));
登录脚本:
$qry = "SELECT * FROM users WHERE email='$email' LIMIT 1";
$result = mysqli_query($dblink, $qry);
if (!mysqli_num_rows($result) > 0) {
// email not in database, error
$loginErrors .= "<li>Username or password wrong</li>";
} else {
$row = mysqli_fetch_assoc($result);
// verify password;
$hash = $row["p4s5"];
if (password_verify($pass, $hash)) {
// not same, error
$loginErrors .= "<li>Username or password wrong</li>";
} else {
// login user
$id = $row["id"];
$fname = $row["fname"];
$lname = $row["lname"];
login($id, $email, $fname, $lname);
header("Location: ".$_SESSION["last-page"]);
}
}
表格结构:
CREATE TABLE users
(
id
int(11)NOT NULL AUT ...
答案 0 :(得分:0)
检查数据库中的密码长度,这可能是您的问题。