그누보드

mysql 버젼업에 따른 사용자 로그인 문제 해결팁

유앤아이의 뉴패러다임 2012. 10. 21. 10:45

해외 호스팅 서비스를 이용하다가 mysql dbd을 이전 하였습니다.
이전후 사용자와 관리자 아이디로 로그인이 안되는 문제가 발생이 됩니다.
추후에 발생할지 모르는 에러를 예방하기 위하여 기록해 둡니다.

다양한 증상들이 나타날수도 있는데 저의 경우는

Fatal error: Call to undefined function sql_password() in /home/youandi/public_html/bbs/login_check.php on line 25 이 나타납니다.

1./bbs/login_check.php 를 수정해 줍니다.
25번째 줄을 아래와 같이 수정해 줍니다.

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

가입된 회원이 아니란 메시가 뜹니다.

2..bbs/ register_form.php를 수정해 줍니다.

73번째 줄
//수정전
 /*
    if (!($member[mb_password] == sql_password($_POST[mb_password]) && $_POST[mb_password]))
        alert("패스워드가 틀립니다.");

  // 수정합니다.
  /*
    if (!($member[mb_password] == sql_old_password($_POST[mb_password]) && $_POST[mb_password]))
        alert("패스워드가 틀립니다.");
   

3./lib/common.lib.php
1125째 줄을 수정합니다.

//원본 1125번째
function sql_password($value)
{
    // mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes
    // mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes
    // 하위버전 DB 호환을 위해 password() --> old_password() 함수로 변경해줌.
    $row = sql_fetch(" select old_password('$value') as pass ");
    return $row[pass];
}

//수정합니다.

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];
}

적용후 로그인 해보면 아래 에러가 발생이 된다.

Fatal error: Call to undefined function sql_password() in /home/youandi/public_html/bbs/login_check.php on line 26

(참고자료 : 그누질답란)
하지만 위의 방법이 안될 경우의 수도 있을수 있으니 참고 바랍니다.
그누보드 : 4.34.14버젼