현재 로그인 시스템이 작동하는 데 문제가 있습니다. 이유에 대해 알았지 만 왜 그런 일이 일어나고 있는지, 구체적으로 무엇이 원인인지 알지 못합니다.PHP에서 데이터베이스 검색시 해시 된 암호가 잘림
데이터베이스에 해쉬 된 암호가 저장되어 있습니다. password
컬럼의 값은 다음과 같습니다
18e2acd33fd3ec752c344b463d00238e35b6b77ed65941f69b9eb96471834f1e507d846071768548f8cf125d6c74ce614d477a576657983bb8620bbc49eed7de
지금은 단순히 선택과 같이 PHP에서 해당 필드를 인쇄 할 갈 때 :
$query = "SELECT password FROM webusers WHERE username = 'Roy'";
$update = odbc_exec($connect, $query);
$row = odbc_fetch_array($update);
print $row['PASSWORD'];
그것은 출력 :
18e2acd33fd3ec752c344b463d00238e35b6b77ed65941f69b9eb96471834f1e507d846071768548f8cf125d6c74ce614d477a576657983bb8620bbc49eed7d
스크롤에 두 해시의 끝 부분에서 두 번째 해시가 최종 'e'가 누락 된 것을 볼 수 있습니다. 그러면 내 전체 로그인 시스템이 중단됩니다. 왜 이런 일이 일어날까요? 나는 PHP 또는 SQL이 비난 할 것인지 확실하지 않다.
PHP 5.4.7을 사용하고 데이터베이스는 ODBC를 통해 연결된 4D SQL 서버입니다.
편집 :password
의 데이터 유형은 열 크기가 문제되지 않도록 4D의 설명서에 따라, 2GB의 데이터까지 저장할 수있는 Text
이다.
데이터베이스에있는 'password' 필드의 데이터 유형은 무엇입니까? PHPMyAdmin 또는 다른 도구를 통해 데이터베이스에서 암호 필드를 직접 볼 때 마지막 전자 메일 주소가 보이십니까? – MatthewMcGovern
db에서이 필드의 길이를 늘리십시오. –
@MatthewMcGovern 예, 4D에서 데이터베이스 필드를 볼 때 마지막 e가 표시됩니다. 필드 유형은 '텍스트'입니다. – Roy