2017-06-18 25 views
1

选择现在我有该行代码具有空间,它SQL平等字母

$query = mysqli_query($connection, "select * from users where password='$password' AND username='$username'");

在MySQL数据库中,我有记录的“测试”,密码为“测试” 但当我用“TEST”“Test”执行此行时,它也会登录。 我该如何删除它?

+0

https://dev.mysql.com/doc/refman/5.7/en/case-sensitivity.html –

+2

首先,您应该[*永远不会*以明文形式存储密码](https://blog.codinghorror.com /您选择-可能储存-密码-错误/)。如果您存储密码的哈希值,然后计算用户输入的哈希值,这应该可以解决您的问题,并使您的应用程序更安全。 –

+0

鲍勃在这里的钱是正确的,使用散列密码单向加密,检查PHP手册的'password_verify'功能 –

回答

0

尝试使用BINARY:

$query = mysqli_query($connection, "select * from users where binary password='$password' AND binary username='$username'"); 

这应该使查询区分大小写。