[제나플러스] [펌]패스워드 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 버전으로 자동으로 바뀌게 되어
구번전으로 변경되게 됩니다.
추천0

댓글목록 0

등록된 댓글이 없습니다.

전체 285건 1 페이지
게시물 검색
Copyright (c) 株式会社YHPLUS. All rights reserved.

사이트 정보

株式会社YHPLUS / 대표 : ZERO
〒171-0014 東京都豊島区池袋2-41-5 アーバン154 8F
050-5539-7787
오픈카카오톡 (YHPLUS) :
https://open.kakao.com/o/slfDj15d

PC 버전으로 보기