我遇到了Xcode和客户登录功能的问题。 2个文本字段:一个用于名称,一个用于密码。
在我的数据库中(例如)密码为“Hello”。 但我可以输入“Hello”或“hello”(不区分大小写)来满足登录条件。
如何才能使其区分大小写? (在Xcode或PHP中?)
.php文件:
$Nickname = $_GET["User"];
$Password = $_GET["Password"];
$query = "SELECT Count(*) FROM kunde WHERE Nickname='$Nickname' AND Password='$Password'";
$result=mysql_query($query) or die("error");
$num = mysql_numrows($result);
mysql_close();
$rows = array();
while ($r = mysql_fetch_assoc($result))
{
$rows[] = $r['Count(*)'];
}
echo json_encode($rows);
答案 0 :(得分:2)
您不应该以纯文本格式存储密码。使用散列函数,如sha1()和盐。您的密码区分大小写。
$Password = sha1($Password . 'somerandomstring');
您需要在存储密码之前和检查之前使用它。 sha1()将始终使用相同的输入生成相同的字符串。
对于数据库中的其他字段,您可以通过对它们使用适当的排序规则来确保它们区分大小写。现在你正在使用 utf8_general_ci 。最后的“ci”部分代表不区分大小写。更改 utf8_general_cs 将解决此问题。
答案 1 :(得分:1)
您还可以将列查询为二进制文件,它将区分大小写:
$query = "SELECT Count(*) FROM kunde WHERE Nickname='$Nickname' AND binary Password='$Password'";
请记住要逃避$ Nickname和$ Password以避免[sql注入] [1]。 (http://en.wikipedia.org/wiki/SQL_injection)