2012-05-20 2 views
2

Я могу получить введенное пользователем имя (имя пользователя) со следующим кодом из формы. Так что мой вопрос: если я положил Shibbirbd (First letter is Capital, но это shibbirbd в моей базе), тогда он успешно переходит на панель входа пользователя! Но это неправильно. почему это произошло? Имя пользователя базы данных Mysql: shibbirbd.Case-Sensitive Queries

Войти Форма сценария:

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

ответ

2

Вы можете изменить свой пункт WHERE на WHERE BINARY (WHERE BINARY uname = '$uname'), чтобы проверить двоичное значение имен пользователей друг против друга на равенство.

Если вы хотите, чтобы все запросы в этой таблице были чувствительны к регистру, вы должны рассмотреть возможность изменения сортировки, как @Kolink suggested.

+0

Я проверяю его .. – Shibbir

+0

Спасибо, работая. :-) – Shibbir

1

Вы говорите, что вы ожидаете, что это не войти вам, если у вас есть прописные буквы там, где должны быть в нижнем регистре?

В этом случае измените порядок сортировки таблицы на то, что чувствительно к регистру, например utf8_bin.

0

В большинстве случаев строки нечувствительны к разборке. Почему важно, чтобы имя пользователя было чувствительным к регистру?

В MySQL вы можете видеть, что с кодировкой _ci, которая означает регистр нечувствительности. Попробуйте создать _bin или _cs, если хотите.

0

Похоже, что сортировка столбцов не зависит от регистра, что является значением по умолчанию. Попробуйте изменить его на регистр с учетом регистра, например latine_general_cs