mysql 버젼업에 따른 패스워드 문제 해결~! - 수정본 글쓴이 키란도 > Board Tip

본문 바로가기
 

mysql 버젼업에 따른 패스워드 문제 해결~! - 수정본 글쓴이 키란도

페이지 정보

작성자 휴먼 댓글 0건 조회 15,288회 작성일 12-05-02 22:36

본문

mysql 버젼업에 따른 패스워드 문제 해결~! - 수정본
btn_scrap_tGTUrAndIGJ3Xu.gif
 글쓴이 : 키란도
icon_view_VHGAiek6Tl39rvu.gif 조회 : 3,297  icon_good_ykAxE8whGXtQ.gif 추천 : 4  
mysql 4.0.x와 4.1.x 이후 버젼 사이에는 패스워드 포맷이 변경되어서 4.0.x의 패스워드는 4.1.x 이후에서는 인식될 수가 없습니다.

호스팅 이전후에 로그인이 안될 경우에는 mysql 버젼을 확인해 보시고 패스워드 포맷이 변경되는 경우에만 적용하시기 바랍니다.

새로운 사용자는 새로운 패스워드로, 옛날 사용자는 옛날 패스워드로 login check를 하도록 참조한 게시물은  

(싸구려팁) mysql 버젼업에 따른 패스워드 문제 해결~! - 아빠불당님
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=11718
게시물을 참고하여 bbs/common.lib.php 과  bbs/login_check.php 를 수정하시고,
(/bbs/register_form.php의 66라인은 수정하지 않으셔도 됩니다.)


추가 수정내용
  - 옛날 사용자가 mysql 4.0.x 패스워드방식(16 bytes)을 사용하여 로그인하면 mysql 4.1.x 버젼의 패스워드(41 bytes)를 멤버테이블의 mb_password 에 저장하게 됩니다.
 
  장점
  - 로그인할때에만 현재의 패스워드 방식을 확인하고 새로운 패스워드 포맷으로 DB 에 업데이트 하므로 /bbs/register_form.php, /bbs/member_leave.php 를 수정할 필요가 없음
  - 모든 회원이 한번이라도 로그인하게 되면 패스워드가 모두 새로운 패스워드 포맷으로 저장되게 되므로 그누보드가 버젼업될때마다 해당코드를 수정하지 않아도 됨
 



원본 - line 26~28
-----------------------------------------
if (!$mb[mb_id] || (sql_password($mb_password) != $mb[mb_password])) {
    alert("가입된 회원이 아니거나 패스워드가 틀립니다.\\n\\n패스워드는 대소문자를 구분합니다.");
}
-----------------------------------------

=>

수정본
-----------------------------------------
if (!$mb[mb_id] || (sql_password($mb_password) != $mb[mb_password] and sql_old_password($mb_password) != $mb[mb_password])) {
    alert("가입된 회원이 아니거나 패스워드가 틀립니다.\\n\\n패스워드는 대소문자를 구분합니다.");
} else {
    if (sql_old_password($mb_password) == $mb[mb_password]) {
        $sql_password = " mb_password = '".sql_password($mb_password)."' ";
        $sql = " update {$g4[member_table]}
                    set $sql_password
                  where mb_id = '$mb[mb_id]' ";
        sql_query($sql);
    }
}
-----------------------------------------
 
추가로
/lib/common.lib.php 말미에 아래 구문을 추가하여야합니다.
 
//mysql 4.x and mysql 5.x
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];
}
 
   

댓글목록

등록된 댓글이 없습니다.

Total 59건 1 페이지
게시물 검색