그누보드 [G4/G5] MySQL 4.1.x, 5.x 로 생성된 password (41byte)를 MySQL 4.0.x 이하(16byte)로 변경
페이지 정보
본문
패스워드(비밀번호) 41bite 버전에서 16bite 버전으로 옮겨야할 경우
기존홈피가 41bite 암호방식을 하는 DB를 사이트 이전의 이유로 16bite 버전으로 옮겨야할 경우
이럴때는 sql_query("set old_passwords=OFF"); 을 적절하게 사용하여 설정을 변경해야 합니다.
로그인 성공시 비밀번호가 16바이트이면 41바이트로 변경됩니다.
[ 그누보드4 ]
1. 그누보드4 / lib / common.lib.php 1175 ~ 1181줄
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];
}
2. 그누보드4 / bbs / login_check.php 25~27줄
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}' ";
} elseif (!$mb['mb_id'] || (sql_password($mb_password) != $mb['mb_password'])) {
alert("가입된 회원이 아니거나 패스워드가 틀립니다.\\n\\n패스워드는 대소문자를 구분합니다.");
}
참고자료
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=32080
http://vndfbfkd.tistory.com/609
[ 그누보드5 ]
1. 그누보드5.2 / bbs / login_check.php 17~18줄
if (!$mb['mb_id'] || !check_password($mb_password, $mb['mb_password'])) {
alert('가입된 회원아이디가 아니거나 비밀번호가 틀립니다.\\n비밀번호는 대소문자를 구분합니다.');
}
를 다음과 같이 변경
function check_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];
}
if (!$mb['mb_id'] || (!check_password($mb_password, $mb['mb_password']) && !check_old_password($mb_password, $mb['mb_password']))) {
alert('가입된 회원아이디가 아니거나 비밀번호가 틀립니다.\\n비밀번호는 대소문자를 구분합니다.');
} elseif (check_old_password($mb_password) == $mb[mb_password]) { // 옛날 비밀번호를 새로운 비밀번호로 바꿉니다.
//$sql = " update {$g5['member_table']} set mb_password='".sql_password($mb_password)."' where mb_id='{$mb_id}' ";
sql_query($sql);
}
참고자료
http://sir.kr/g5_tip/3423
https://sir.kr/qa/191265
MySQL 4.0이하 생성된 회원password 및 비회원 게시글 비밀번호를 MySQL 4.1, 5.x 로 변경하는 방법
https://www.happyjung.com/lecture/320
기존홈피가 41bite 암호방식을 하는 DB를 사이트 이전의 이유로 16bite 버전으로 옮겨야할 경우
이럴때는 sql_query("set old_passwords=OFF"); 을 적절하게 사용하여 설정을 변경해야 합니다.
로그인 성공시 비밀번호가 16바이트이면 41바이트로 변경됩니다.
[ 그누보드4 ]
1. 그누보드4 / lib / common.lib.php 1175 ~ 1181줄
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];
}
2. 그누보드4 / bbs / login_check.php 25~27줄
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}' ";
} elseif (!$mb['mb_id'] || (sql_password($mb_password) != $mb['mb_password'])) {
alert("가입된 회원이 아니거나 패스워드가 틀립니다.\\n\\n패스워드는 대소문자를 구분합니다.");
}
참고자료
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=32080
[ 그누보드5 ]
1. 그누보드5.2 / bbs / login_check.php 17~18줄
if (!$mb['mb_id'] || !check_password($mb_password, $mb['mb_password'])) {
alert('가입된 회원아이디가 아니거나 비밀번호가 틀립니다.\\n비밀번호는 대소문자를 구분합니다.');
}
를 다음과 같이 변경
function check_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];
}
if (!$mb['mb_id'] || (!check_password($mb_password, $mb['mb_password']) && !check_old_password($mb_password, $mb['mb_password']))) {
alert('가입된 회원아이디가 아니거나 비밀번호가 틀립니다.\\n비밀번호는 대소문자를 구분합니다.');
} elseif (check_old_password($mb_password) == $mb[mb_password]) { // 옛날 비밀번호를 새로운 비밀번호로 바꿉니다.
//$sql = " update {$g5['member_table']} set mb_password='".sql_password($mb_password)."' where mb_id='{$mb_id}' ";
sql_query($sql);
}
참고자료
http://sir.kr/g5_tip/3423
https://sir.kr/qa/191265
MySQL 4.0이하 생성된 회원password 및 비회원 게시글 비밀번호를 MySQL 4.1, 5.x 로 변경하는 방법
https://www.happyjung.com/lecture/320
댓글목록
등록된 댓글이 없습니다.