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

时间:2012-02-21 13:46:24

标签: php xcode login case-sensitive

我遇到了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); 

2 个答案:

答案 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)