2012-02-21 79 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