2012-02-21 35 views
0

我有一个Xcode和客户登录功能的问题。 2文本框:一个用于名称,一个用于密码。登录:区分大小写Xcode/PHP

在我的数据库(例如)密码是“你好”。 但是我可以输入“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

Xcode在这方面的作用是什么? – Monolo 2012-02-21 13:52:48

+1

你能告诉我们你的数据库/表使用哪种mysql排序规则吗? – pduersteler 2012-02-21 13:53:43

+0

你可以在php代码中使用strcmp()函数来检查它,或者将表编码从_ci(case insensetive)改为_cs(case sensetive) – Electronick 2012-02-21 14:01:54

回答

1

您还可以查询列二,这将是区分大小写:

$query = "SELECT Count(*) FROM kunde WHERE Nickname='$Nickname' AND binary Password='$Password'"; 

记住逃避你的$昵称和密码$避免[SQL注入] [1]。 (http://en.wikipedia.org/wiki/SQL_injection)

2

你不应该采用明文存储密码。使用sha1()和散列函数。您的密码将区分大小写。

$Password = sha1($Password . 'somerandomstring'); 

您需要在存储密码之前和检查密码之前使用它。 sha1()将始终使用相同的输入生成相同的字符串。

至于数据库中的其他字段,可以使用适当的排序规则确保它们区分大小写。现在你正在使用utf8_general_ci。最后的'ci'部分代表不区分大小写。将其更改为utf8_general_cs将解决该问题。

+0

好的谢谢,我会试试! 其他栏显示正确。但是密码字符串的比较并不完全。 – kerimrohs 2012-02-22 09:18:11