我使用.custom-checkbox .custom-control-indicator {
border-radius: .25rem;
}
删除了密码,并使用password_hash()
当我直接在变量中写入散列时,值为True
password_verify();
但是当我从MySQL调用该值时,当我把它放在这个函数中时,该值为false,我为值创建了echo,值为true,但我不知道为什么当我把它放错时在$hash = '$2y$10$lKwHxxc1YJI01ftNe33pcOvddAVrLd0GHwb3Ya3eqQJ2HxycpHjpO';
我查找有关此问题的所有先前问题,但我没有找到任何答案,这是我的代码
password_verify();
修改
以下是用于散列密码的代码:
if(isset($_POST['submit'])=="Log In") {
$password = 'aliali12';
$sql = mysqli_query($con, "SELECT * FROM users WHERE user_id = 1");
$hashed_pass = mysqli_fetch_assoc($sql);
if (password_verify("$password",$hashed_pass['user_pass'])){
echo "Correct Password";
} else {
echo 'There are some wrong';
}
}
答案 0 :(得分:3)
这里似乎有两个问题。来自your comment we found that ...
mysqli_real_escape_string()
。在插入密码之前,不应该修改密码,保持密码清洁。如果密码包含例如单引号,则此功能可能会更改密码。\n
与哈希相连,而在比较时,它没有那个。在插入此数据时对密码进行散列处理时需要将其删除。这些需要更正(real_escape()
不应该在密码上,并且删除换行符),并且在完成这些更正后再次插入密码。
除此之外,
if(isset($_POST['submit'])=="Log In") {
不是你的想法。它在技术上会起作用,因为它会将布尔值与true进行比较(因此,如果设置为true == true
,则为false == true
)。它应该只是
if (isset($_POST['submit'])) {