2010년 3월 10일 수요일

MySQL 버전업으로 인한 password 복구 방법(제로보드)

 
MySQL 4.0버전에서 4.1이상의 버전으로 업그레이드시 패스워드 저장방식이 바뀌었습니다.
 
그에 따라 서버 이전을 하거나 업그레이드를 할 경우 패스워드 저장형식이 달라 로그인이 되지 않는 현상이 발생합니다.
 
개개인의 패스워드를 일일이 알지 못하기 때문에 회원이 로그인을 하면 패스워드를 체크하여 새로운 형식으로 변경되어 저장하도록 바꾸어야 한다.
 
 
패스워드 체크를 하는 쿼리문 앞에 다음과 같은 형식의  업데이트문을 두어 새로운 형식과 같으면 그냥 로그인을 하고 그렇지 않은 경우 old_password와 비교하여 일치하면 새로운 형식의 패스워드로 업데이트를 한 후 로그인을 하게 한다.
 
아래는 제로보드의 login_check.php 파일을 수정한 예이다.

[code php]$result_chk = mysql_fetch_array(mysql_query("select count(user_id) from $member_table where user_id='$user_id' and password=password('$password')")); if(!$result_chk[0]) { $result_chk = mysql_fetch_array(mysql_query("select count(user_id) from $member_table where user_id='$user_id' and password=old_password('$password')")); if($result_chk[0]) { $que = mysql_query("update $member_table set password=password('$password') where user_id='$user_id'"); } } $result = mysql_query("select * from $member_table where user_id='$user_id' and password=password('$password')") or error(mysql_error()); $member_data = mysql_fetch_array($result);[/code]

댓글 없음:

댓글 쓰기