出于某种原因,这个查询运行区分大小写:为什么这个查询MySQL查询运行时区分大小写?
$stmt = $db->prepare("SELECT * FROM people WHERE email = :email LIMIT 1");
它只是简单地返回它是否找到用户:
$stmt->bindParam(':email', $email);
$stmt->execute();
$row = $stmt->fetch();
if($row['email'] == $email)
{
return "<span style='color: red;'>User found.</span><br>";
} else {
return "<span style='color: red;'>User not found.</span><br>";
}
(顺便说一句,这是所有刚刚上演。只要我看到这个工作正常,就会有密码哈希)。
它发现用户没有问题,如果我使用相同的情况下,该数据库条目。
这里是我的表,所以你可以看到它的所有定义的词:
这实际上是我建的时候我不知道很多关于PHP现有的网站,所以我完全重写了很多,并设置了正确的密码哈希和https。这是所有工作正常之前,我写了新的功能,并没有在数据库已更改......
所以现在只检查输入的电子邮件地址,只是为了看看如果查询工作,并且我们从得到结果数据库,稍后我们将检查密码并添加实际的登录功能。
这里是在数据库中的数据:
现在,如果我填写我的用户名是“克里斯”,并运行该功能,则返回“用户发现”,所以我知道查询那是成功的。但是,如果我填写为“Chris”,则返回“未找到用户”,所以我知道这是不成功的。
发现问题,虽然。作为答案发布。
我不明白为什么任何人都会执行认证部分而不使用密码散列开始。它只是增加一个额外的有效载荷,以纯文本工作。然后开始验证散列,这是多余的。使用偏移量为 –
的哈希值不清晰。你想达到什么目的? – aimme
@aimme mysql标签是这里需要的。当OP扩展他/她需要的内容时,它可能位于MySQL后端 –