2

フォームから次のコードを使用して、ユーザーが入力した名前 (ユーザー名) を取得できます。だから私の質問は、Shibbirbd(最初​​の文字は大文字ですがshibbirbd、データベースにあります)入れれば、ユーザーログインパネルに正常に移動します! しかし、それは間違っています。なぜこれが起こったのですか?Mysql データベースのユーザー名は:shibbirbdです。

ログイン フォーム スクリプト:

$uname = mysql_real_escape_string(htmlspecialchars(trim($_POST['uname'])));
$pass = mysql_real_escape_string(htmlspecialchars(trim($_POST['pass'])));
4

5 に答える 5

2

WHERE句をWHERE BINARY( ) に変更してWHERE BINARY uname = '$uname'、ユーザー名のバイナリ値が互いに等しいかどうかをテストできます。

このテーブルのすべてのクエリで大文字と小文字を区別する場合は、@Kolink が提案したように、照合順序を変更することを検討する必要があります。

于 2012-05-20T06:47:48.643 に答える
1

小文字があるはずのところに大文字があると、ログインしないと予想していると言っていますか?

その場合は、テーブルの照合順序を、大文字と小文字が区別されるもの ( utf8_bin.

于 2012-05-20T06:47:15.377 に答える
0

ほとんどの場合、文字列は大文字と小文字を区別せずに比較されます。ユーザー名の大文字と小文字を区別することが重要なのはなぜですか?

MySQL では、大文字と小文字を区別しないエンコーディング _ci でそれを見ることができます。必要に応じて、_bin または _cs フォーマットを試してください。

于 2012-05-20T06:47:33.570 に答える
0

列の照合は大文字と小文字を区別しないように聞こえますが、これがデフォルトです。latine_general_cs など、大文字と小文字を区別する照合に変更してみてください。

于 2012-05-20T06:48:03.070 に答える
0

大文字と小文字を区別するために使用COLLATEします。このリンクの例を参照してください。
http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

于 2012-05-20T06:50:04.207 に答える