登录:区分大小写的Xcode/PHP


Login: Case sensitive Xcode/PHP

我的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)