2012-05-20 5 views
2

다음 코드로 사용자 입력 이름 (사용자 이름)을 얻을 수 있습니다. 그래서 내 질문은 만약 내가 Shibbirbd (첫 번째 문자는 자본이지만, 그것은 내 데이터베이스에 shibbirbd) 그럼 성공적으로 사용자 로그인 패널로 이동이야! 그러나 그것이 잘못되었습니다. 왜 이런 일이 일어난거야? MySQL 데이터베이스 사용자 이름 : shibbirbd.대소 문자를 구별 한 문의

로그인 양식 스크립트 :

$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).