정보실

웹학교

정보실

그누보드 예전 그누보드4에서 현재 그누보드5로 업그레이드하면서 생기는 문제들

본문

mysql4에서 돌아가던 그누보드와 지금의 mysql5이상과의 암호화방식에서 오는 로그인오류문제입니다. 


1. /lib/common.lib.php 의 1515번째 줄입니다.(버전에 따라 약간의 차이가 있을 수 있습니다. g5-5.0b34)

기존 :
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)
{
$row = sql_fetch(" select old_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 password('$value') as pass ");
return $row[pass];
}


2. /bbs/login_check.php 의 17번째 줄입니다.

기존 :
if (!$mb['mb_id'] || (sql_password($mb_password) != $mb['mb_password'])) {
alert('가입된 회원아이디가 아니거나 비밀번호가 틀립니다.\\n비밀번호는 대소문자를 구분합니다.');
}
을 아래와 같이 변경합니다.


변경 :
if (sql_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);
} elseif (!$mb[mb_id] || (sql_password($mb_password) != $mb[mb_password])) {
alert("가입된 회원이 아니거나 패스워드가 틀립니다.\\n\\n패스워드는 대소문자를 구분합니다.");
}


3. /bbs/register_form.php의 70~77번째 줄입니다.

기존 :
if ($_POST['is_update'])
$tmp_password = $_POST['mb_password'];
else
$tmp_password = sql_password($_POST['mb_password']);

if ($member['mb_password'] != $tmp_password)
alert('비밀번호가 틀립니다.');
}
을 아래와 같이 변경합니다.


변경 :
if ($_POST['is_update'])
$tmp_password = $_POST['mb_password'];
else
{
$tmp_password = sql_password($_POST['mb_password']);
$tmp_old_password = sql_old_password($_POST['mb_password']);
}

if ($member['mb_password'] != $tmp_password && $member['mb_password'] != $tmp_old_password)
alert("패스워드가 틀립니다.");
}

 

  • 트위터로 보내기
  • 페이스북으로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

페이지 정보

조회 1,163회 ]  작성일14-12-12 17:59

웹학교