패스워드 41bite 버전에서 16bite 버전으로 옮겨야할 경우. > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

패스워드 41bite 버전에서 16bite 버전으로 옮겨야할 경우. 정보

패스워드 41bite 버전에서 16bite 버전으로 옮겨야할 경우.

본문

패스워드 41bite 버전에서 16bite 버전으로 옮겨야할 경우.

기존홈피가 41bite 암호방식을 하는 DB를 사이트 이전의 이유로 16bite 버전으로 옮겨야할 경우.

mysql 버전이 4.1이상인데도 구버전을 사용하는 경우가 있을 수 있습니다.

아마도 새로운 41bite방식을 사용하지 않고 구 16bite방식을 계속 사용하기 위해 옵션을 조절한 경우일텐데요.

일부러 이렇게 사용하는 이유는 .. 뭔 사정이 있겠지만..

암튼 구버전으로 구동되기 때문에 로그인, 정보수정 등에서 비번 정보를 물어오는데요.

이때 옮기기전 서버에서 신버전을 사용하기 때문에 일반적으로는 로그인이 되지 않습니다.

버전별 암호화 방식이 다르기 때문에 다른 문자로 인식해서 입니다.

이럴때는 구버전과 신버전의 암호를 비교하여 신버전 암호가 맞으면 암호를 구버전으로 업데이트

하라는 방식이로 구현할 수 있습니다.

좀전에 있던 것과 정반대로 하는 방식입니다.

http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=21757

위의 방식이 맞는 줄 알고 했다가 다시 로그인해보니 안되어서 다시

한 2시간 해메이다. 풀었습니다.



이럴때는 sql_query("set old_passwords=OFF"); <= 요놈을 적절하게 사용하여 설정을 잡아 줘야한다는 것이었습니다.


./lib/common.lib.php 파일에서



function sql_password($value)
{
    // mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes
    // mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes

    $row = sql_fetch(" select password('$value') as pass ");
    return $row[pass];
}


=========== 를 아래와 같이 변경 ============

function sql_old_password($value)
{
    // mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes
    // mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes
 
sql_query("set old_passwords=OFF");
    $row = sql_fetch(" select password('$value') as pass ");
    return $row[pass];
}

function sql_password($value)
{
    // mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes
    // mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes
sql_query("set old_passwords=ON");
    $row = sql_fetch(" select password('$value') as pass ");
    return $row[pass];
}





그리고

./bbs/login.check.php 에서


if (!$mb[mb_id] || (sql_password($mb_password) != $mb[mb_password])) {

    alert("가입된 회원이 아니거나 패스워드가 틀립니다.\\n\\n패스워드는 대소문자를 구분합니다.");
}

=============를 아래와 같이 변경 =================

if (sql_old_password($mb_password) == $mb[mb_password]) { // 옛날 패스워드를 새로운 패스워드로 바꿉니다.
    $sql = " update $g4[member_table] set mb_password='" . sql_password($mb_password) . "' where mb_id='$mb_id' ";
    sql_query($sql);

} elseif (!$mb[mb_id] || (sql_password($mb_password) != $mb[mb_password])) {

    alert("가입된 회원이 아니거나 패스워드가 틀립니다.\\n\\n패스워드는 대소문자를 구분합니다.");
}


해주시면

로그인하는 회원들의 비밀번호가 로그인 할 때 41bite 버전에서 16bite 버전으로 자동으로 바뀌게 되어
구번전으로 변경되게 됩니다.
추천
2

댓글 3개

전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT