我的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);
您不应该以纯文本形式存储密码。使用类似sha1()的散列函数和salt。您的密码将区分大小写。
$Password = sha1($Password . 'somerandomstring');
您需要在存储密码之前和检查密码之前使用它。sha1()将始终使用相同的输入生成相同的字符串。
至于数据库中的其他字段,可以通过使用适当的排序规则来确保它们区分大小写。现在您正在使用utf8_general_ci。结尾的"ci"部分代表不区分大小写。将其更改为utf8_general_cs将解决此问题。
您也可以将列查询为二进制列,并且它将区分大小写:
$query = "SELECT Count(*) FROM kunde WHERE Nickname='$Nickname' AND binary Password='$Password'";
请记住转义$Nickname和$Password,以避免[sql注入][1]。(http://en.wikipedia.org/wiki/SQL_injection)