웹호스팅 또는 서버호스팅에 따라서 mysql의 버젼이 꽤 많이 차이가 나는게
4.0.x와 4.1.x 이후 버젼 사이에는 패스워드 포맷이 달라지는 중대한 변화가 있습니다.
그 결과 4.0.x의 패스워드는 4.1.x 이후에서는 인식될 수가 없습니다.
mysql에서는 편법으로 서버 옵션으로 --old_password 라는 것을 제시해서 4.1.x 이후에도
옛날의 허술한 패스워드를 쓸 수 있게 해주고 sql에서도 old_password라는게 있습니다.
그러나 이것은 진정한 문제의 해결이 아니고 문제를 잠시 덮어주는 역활만을 하는 것이죠.
제가 5.0.41로 버젼업을 하면서 옛날의 4.0.x의 패스워드가 먹히게 하기 위해서 ...
/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];
}
{
// mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes
// mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes
$row = sql_fetch(" select old_password('$value') as pass ");
return $row[pass];
}
/bbs/login_check.php의 15라인을 다음과 같이 수정 합니다.
if (!$mb[mb_id] || (sql_password($mb_password) != $mb[mb_password] and sql_old_password($mb_password) != $mb[mb_password]))
/bbs/register_form.php의 66라인을 다음과 같이 수정
if (!($member[mb_password] == sql_password($_POST[mb_password]) && $_POST[mb_password]) && !($member[mb_password] == sql_old_password($_POST[mb_password]) && $_POST[mb_password]))
그러면 새로운 사용자는 새로운 패스워드로, 옛날 사용자는 옛날 패스워드로 login check를 하게 됩니다.
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=11718
'스크립트 > 그누보드 관련' 카테고리의 다른 글
그룹 과 제목을 출력하기 (0) | 2009.10.28 |
---|---|
셈플 copyright (0) | 2009.10.28 |
갤러리게시판 사진 일괄 입력 하기 (0) | 2009.09.23 |
영카트 변수 몇가지.. (0) | 2009.08.31 |
[그누보드]게시판 상태에서 현재 게시판의 관리자페이지로 바로 이동 (0) | 2009.08.31 |