그누보드를 사용하면서 소소한 것 부터 일일 수정하다가 MySQL 버전에 따라 패스워드 처리하는게 달라져 겪었던 일이죠.
MySQL 4.0과 4.1이 패스워드를 강화하다보니 그누보드에서 패스워드 처리 함수를 수정했습니다.
처음엔 이걸 몰라 왜 로그인이 안될까 고민하던 중 그누보드 사이트에 올라온 내용을 보고 알았습니다.
간혹 찾아볼 경우를 대비하여 이렇게 정리해 봅니다.
우선, 가장 편한 방법은
/lib/common.lib.php 에 다음 함수의 'password'를 'old_password'로 수정합니다.
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_password($value)
{
// mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes
// mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes
$row = sql_fetch(" select old_password('$value') as pass ");
return $row[pass];
}
그러나, 원래 함수는 수정하지 않고 아래와 같이 함수를 추가하여 사용하는 분도 계신다네요.
1. /lib/common.lib.php 에 다음 함수를 추가합니다.
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];
}
2. /bbs/login_check.php에서 다음과 같이 수정 합니다.
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패스워드는 대소문자를 구분합니다.");
}
로 수정합니다.
3. /bbs/register_form.php에서 다음과 같이 수정
if (($member[mb_password] == sql_password($_POST[mb_password]) and $member[mb_password] == sql_old_password($_POST[mb_password])) && $_POST[mb_password])
위와 같은 좋은 정보 주신 분들께 감사합니다.
'웹쟁이' 카테고리의 다른 글
HTML/CSS border-radius 이미지를 둥글게 처리하기 (0) | 2020.06.17 |
---|---|
[IE] '스크립트나 ActiveX 컨트롤 실행 제한' 보안경고 안뜨게 하기 (1) | 2016.12.22 |
[Flash CS4] 'caurina.transitions.equations could not be loaded' 오류 해결 (0) | 2016.12.22 |
[APMSETUP7] 그누보드4 설치의 경우 character set euckr 변경 (0) | 2016.12.22 |