2026, 새로운 도약을 시작합니다.

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

· 10년 전 · 12704 · 6
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라인 쯤

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

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

[code]
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);
}
[/code]

첨부파일

login_check.php (4.4 KB) 118회 2015-12-01 16:15
|

댓글 6개

감사합니다
좋은 자료 감사합니다.
서버이전 후 로그인 관련
로그인 패스워드변환

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

그누보드5 팁자료실

번호 제목 글쓴이 날짜 조회
공지 3년 전 조회 4,598
2741 3일 전 조회 112
2740 4일 전 조회 104
2739 1주 전 조회 209
2738 1주 전 조회 217
2737 1주 전 조회 181
2736 1주 전 조회 280
2735 3주 전 조회 281
2734 3주 전 조회 263
2733 1개월 전 조회 265
2732 1개월 전 조회 301
2731 1개월 전 조회 267
2730 1개월 전 조회 226
2729 1개월 전 조회 356
2728 1개월 전 조회 245
2727 1개월 전 조회 422
2726 1개월 전 조회 256
2725 1개월 전 조회 330
2724 1개월 전 조회 360
2723 1개월 전 조회 267
2722 1개월 전 조회 300
2721 1개월 전 조회 211
2720 2개월 전 조회 304
2719 2개월 전 조회 307
2718 2개월 전 조회 202
2717 2개월 전 조회 336
2716 2개월 전 조회 202
2715 2개월 전 조회 312
2714 2개월 전 조회 273
2713 2개월 전 조회 376
2712 2개월 전 조회 289
🐛 버그신고