그누보드 4 패스워드 워드프레스 이전 관련
쿤스트바다
8년 전
조회 3,512
안녕하세요,
그누보드 4의 내용을 워드프레스로 대부분 이전 완료했는데 패스워드가 암호화 방식이 달라서 기존 암호로는 접근이 안되는 문제가 있습니다.
전체를 리셋해서 회원들에게 새 비번을 찾아 가도록 하는 방법도 있긴한데 이것은 역시 회원들의 불편을 초래할 것 같아서 기존 비번으로 접근이 가능하도록 하고 싶은데 혹시 아시는 분 있으시면 도움을 구합니다.
감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
8년 전
제가 3년전에 그누보드 5용으로 짰었던 코드입니다.
지금은 제대로 동작하는지 잘 모르겠습니다.
코드를 보시면 도움이 되실겁니다.
사전에 user_meta 테이블에 mb_password 키로 기존의 그누보드 4용 패스워드를 저장해 놓습니다.
그런 다음 add_filter 함수를 이용하여, 워드프레스에서 로그인시 아래 코드를 실행시킵니다.
</p><p>//로그인 필터</p><p>add_filter( 'wp_authenticate_user', 'g5_authenticate_login_filter', 10, 2 );</p><p>
</p><p>function g5_authenticate_login_filter($user, $password){</p><p> global $wpdb;</p><p>
</p><p> //로그인 패스워드 검사를 미리 한다.</p><p> if ( isset($user->ID) && !wp_check_password($password, $user->user_pass, $user->ID) ) { </p><p> $g5_password = get_user_meta($user->ID, 'mb_password'); //user meta에 mb_password필드를 구해온다.</p><p> </p><p> //mb_password가 있다면 아래 실행</p><p> if( !empty($g5_password[0]) ){</p><p> if( $g5_password[0] === g5_sql_password($password) ){ //그누보드5에서 쓰던 비번이 맞다면</p><p> wp_set_password($password, $user->ID ); //워드프레스 비밀번호로 바꾼후</p><p> delete_user_meta($user->ID, 'mb_password'); //user_meta 에서 더 이상 사용되지 않을 해당 mb_password 필드를 지운다.</p><p> $g5_user = get_user_by( 'login', $user->user_login ); //변경된 사용자 값을 다시 가져온다</p><p> return $g5_user; // 유저 정보를 리턴</p><p> }</p><p> }</p><p> }</p><p>
</p><p> return $user;</p><p>}</p><p>
</p><p>function g5_sql_password($value)</p><p>{</p><p> global $wpdb;</p><p> // mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes</p><p> // mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes</p><p> $row = $wpdb->get_row(" select password('$value') as pass ", ARRAY_A);</p><p>
</p><p> return $row['pass'];</p><p>}</p><p>
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인