서버이전시 암호화된 비밀번호 해결방법 문의드립니다..
본문
euc-kr 낮은 버전에서 utf8 상위버전으로 호스티이전을 했는데요.
회원 mb_password 필드의 암호화 방식이 16비트에서 41비트로 바뀌어서
기존 회원이 로그인이 안됩니다..
질문내용에서 찾아보니 아래의 lib/common.lib.php 에 소스수정하면 된다고 되어 있는데요..
이 경우는 높은버전에서 낮은버전으로 하는 경우고
제 경우 어떻게 해야하는지요.
-=======================================
lib/common.lib.php에서
-------------------------------------------------------------------
function sql_password($value)
{
// mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes
// mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes
// mysql 4.1x 이상 버젼에서도 password() 함수의 결과가 16bytes가 되어서
// 41바이트의 기존 비밀번호 때문에 로그인 오류가 나는 경우에는 아래 코멘트를 풀어주세요
// 마루호스팅에서 테스트 했습니다.
sql_query("set old_passwords=0");
$row = sql_fetch(" select password('$value') as pass ");
return $row[pass];
}
회원 mb_password 필드의 암호화 방식이 16비트에서 41비트로 바뀌어서
기존 회원이 로그인이 안됩니다..
질문내용에서 찾아보니 아래의 lib/common.lib.php 에 소스수정하면 된다고 되어 있는데요..
이 경우는 높은버전에서 낮은버전으로 하는 경우고
제 경우 어떻게 해야하는지요.
-=======================================
lib/common.lib.php에서
-------------------------------------------------------------------
function sql_password($value)
{
// mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes
// mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes
// mysql 4.1x 이상 버젼에서도 password() 함수의 결과가 16bytes가 되어서
// 41바이트의 기존 비밀번호 때문에 로그인 오류가 나는 경우에는 아래 코멘트를 풀어주세요
// 마루호스팅에서 테스트 했습니다.
sql_query("set old_passwords=0");
$row = sql_fetch(" select password('$value') as pass ");
return $row[pass];
}
답변 3
/lib/common.lib.php 에 다음 함수를 추가 합니다.
function sql_old_password($value)
{
// mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes
// mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes
$row = sql_fetch(" select old_password('$value') as pass ");
return $row[pass];
}
그다음에 /bbs/login_check.php의 17라인을 다음과 같이 수정 합니다.
if (!$mb[mb_id] || (sql_password($mb_password) != $mb[mb_password] and sql_old_password($mb_password) != $mb[mb_password]))
이렇게 하시면, 로그인에 문제없으실겁니다.!-->!-->
감사합니다..
잘 해결되었습니다
저도 이 해결방법으로 문제를 잘 해결했습니다.
그런데 정보수정에서 다시 한번 비밀번호를 체크할 때에는 '비밀번호가 틀립니다' 오류메세지가 뜹니다.
비슷한 방법으로 뭔가를 더 수정해야 할 것 같은데 어떻게 하면 좋을까요?
답변부탁드립니다.
답변을 작성하시기 전에 로그인 해주세요.