mysql 4.0 -> mysql 5.x 버전으로 이전시 password 문제 > 그누보드5 팁자료실

그누보드5 팁자료실

mysql 4.0 -> mysql 5.x 버전으로 이전시 password 문제 정보

mysql 4.0 -> mysql 5.x 버전으로 이전시 password 문제

첨부파일

login_check.php (4.4K) 115회 다운로드 2015-12-01 16:15:56

본문

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

password() 함수의 차이로 mysql 4.1 이상에서는 old_password() 함수를 지원합니다.

현재 g5 최신버전에 맞게 수정했습니다.

로그인 성공시 db의 비밀번호가 16바이트이면 41바이트로 변경됩니다.


/bbs/login_check.php 파일의 17라인 쯤


if (!$mb['mb_id'] || !check_password($mb_password, $mb['mb_password'])) {
    alert('가입된 회원아이디가 아니거나 비밀번호가 틀립니다.\\n비밀번호는 대소문자를 구분합니다.');
}


부분을 아래와 같이 수정하시면 됩니다.


function sql_password2($value)
{
    // mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes
    // mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes
    $row = sql_fetch(" select old_password('$value') as pass ");

    return $row['pass'];
}

// 비밀번호 비교
function check_old_password($pass, $hash)
{
	$password = sql_password2($pass);
    return ($password === $hash);
}

if (!$mb['mb_id'] || (!check_password($mb_password, $mb['mb_password']) && !check_old_password($mb_password, $mb['mb_password']))) {
    alert('가입된 회원아이디가 아니거나 비밀번호가 틀립니다.\\n비밀번호는 대소문자를 구분합니다.');
}

if(check_old_password($mb_password, $mb['mb_password'])) {
	$sql= " update {$g5['member_table']} set mb_password = password('$mb_password') where mb_id = '{$mb['mb_id']}' ";
    sql_query($sql);
}
추천
3

댓글 6개

전체 2,431 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

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