2012-02-21 24 views
0

Xcodeと顧客ログイン機能に問題があります。 2テキストフィールド:1つは名前用、もう1つはパスワード用です。ログイン:大文字と小文字を区別するXcode/PHP

私のデータベース(たとえば)では、パスワードは "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); 
+0

この中でXcodeの役割は何ですか? – Monolo

+1

データベース/テーブルに使用しているmysql照合を教えてください。 – pduersteler

+0

phpコードでstrcmp()関数を使用してチェックしたり、テーブルエンコーディングを_ci(case insensetive)から_cs(case sensetive)に変更することができます – Electronick

答えて

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

okありがとう、私はそれを試してみましょう! その他のフィールドが正しく表示されます。しかし、パスワード文字列の比較は正確ではありません。 – kerimrohs

関連する問題