1

ユーザーのユーザー名とパスワードを検証するシステムを作成しようとしています。現在、ユーザー名の確認に問題があります...誰かのユーザー名が Burrito である場合、クエリを渡してデータベースにあるかどうかを確認すると、文字の大文字と小文字が正しいかどうかが確認されません。例: ユーザー名は Michael です。michael または MiChAeL と入力しても、同じユーザー名であると認識されます。

ユーザー名を確認するために使用しているものは次のとおりです。

$isValid = mysql_query("SELECT username FROM " . getSQL_Info(3) . " WHERE username = '" . $user . "'");

お時間をいただき、ありがとうございました。また、私のコードに何か問題が見られた場合は、何か改善できるかどうか教えてください :)

4

3 に答える 3

3

MySQL エンコーディング タイプを確認する必要があります。utf8_general_ciまたはlatin1_swedish_ci(または で終わるもの) の場合_ci、大文字と小文字は区別されません。

テーブルのエンコードを変更するか、次を使用することで、これを回避できます。

SELECT username FROM table WHERE BINARY username = :username

フォーマをお勧めします。

関連: MySQL で SQL の大文字と小文字を区別する文字列比較を行うにはどうすればよいですか?

また、私のコードに何か問題が見られた場合は、何か改善できるかどうか教えてください :)

于 2012-09-20T23:49:48.073 に答える
1
  • 非推奨の mysql 関数を使用している
  • セキュリティを意識する
  • あなたの問題の解決策は

    SELECT * FROM foo WHERE (BINARY ユーザー名="someNaMe")

于 2012-09-20T23:53:07.603 に答える
0

Collat​​eを使用して、大文字と小文字を区別する文字列を比較します。MySQLマニュアルへのリンクは次のとおりです

于 2012-09-21T06:25:23.307 に答える