그누보드4 아이디 변경 함수 - 모든 테이블의 아이디를 변경

munilive
munilive

그누보드 사용시 아이디값을 이메일등으로 사용하거나 아이디를 변경하게 하도록 하는 사이트들이 존재 한다.
그누보드에서는 아이디 값이 게시판테이블에서나 포인트등 에서 회원을 구분하는 유일한 키값으로 사용하기에 아이디가 변경되면 관련된 모든 테이블의 아이디를 변경해줘야 아이디를 변경한 회원이 이전에 사용하던 내역을 함께 변경하여 관리 할 수 있다.

아래 함수는 그누보드에서 기본적으로 제공되는 테이블만 모아 아이디(mb_id)를 변경할 경우에 함수 호출 한번으로 모든 DB 테이블의 mb_id 값을 원하는 값으로 변경한다.

//아이디를 변경처리 합니다.
function changeMemberID($mb_id, $new_mb_id) {
    global $g4, $member;

    $mb = get_member($mb_id);

    if(empty($mb['mb_id'])) return false;

    //회원테이블 아이디 변경
    $sql_update = " UPDATE {$g4['member_table']} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
    sql_query($sql_update);
    //관리권한테이블
    $sql_update = " UPDATE {$g4['auth_table']} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
    sql_query($sql_update);
    //그룹테이블
    $sql_update = " UPDATE {$g4['group_table']} SET gr_admin = '{$new_mb_id}' WHERE gr_admin = '{$mb_id}' ";
    sql_query($sql_update);
    //그룹멤버테이블
    $sql_update = " UPDATE {$g4['group_member_table']} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
    sql_query($sql_update);
    //게시판설정테이블
    $sql_update = " UPDATE {$g4['board_table']} SET bo_admin = '{$new_mb_id}' WHERE bo_admin = '{$mb_id}' ";
    sql_query($sql_update);
    //추천/비추천 테이블
    $sql_update = " UPDATE {$g4['board_good_table']} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
    sql_query($sql_update);
    //새글관리 테이블
    $sql_update = " UPDATE {$g4['board_new_table']} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
    sql_query($sql_update);
    //로그인테이블
    $sql_update = " UPDATE {$g4['login_table']} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
    sql_query($sql_update);
    //메모테이블
    $sql_update = " UPDATE {$g4['memo_table']} SET me_recv_mb_id = '{$new_mb_id}' WHERE me_recv_mb_id = '{$mb_id}' ";
    sql_query($sql_update);
    $sql_update = " UPDATE {$g4['memo_table']} SET me_send_mb_id = '{$new_mb_id}' WHERE me_send_mb_id = '{$mb_id}' ";
    sql_query($sql_update);
    //게시판스크랩
    $sql_update = " UPDATE {$g4['scrap_table']} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
    sql_query($sql_update);

    //투표테이블
    $sql = " SELEcT * FROM {$g4['poll_table']} ";
    $qey_result = sql_query($sql);
    while($row = sql_fetch_array($qey_result)) {
        $po_id = $row['po_id'];
        $poll_mb_ids = preg_replace("/{$mb_id}}/", $new_mb_id, $row['mb_ids']);
        $sql_update = " UPDATE {$g4['poll_table']} SET mb_ids = '{$poll_mb_ids}' WHERE po_id = '{$po_id}' ";
        sql_query($sql_update);
    }

    //투표기타의견 테이블
    $sql_update = " UPDATE {$g4['poll_etc_table']} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
    sql_query($sql_update);

    //포인트테이블
    $sql_update = " UPDATE {$g4['point_table']} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
    sql_query($sql_update);
    $sql_update = " UPDATE {$g4['point_table']} SET po_rel_id = '{$new_mb_id}' WHERE po_rel_id = '{$mb_id}' ";
    sql_query($sql_update);

    //등록되어있는 모든 게시판
    $sql = " SELECT * FROM {$g4['board_table']} ";
    $qey_result = sql_query($sql);
    while($row = sql_fetch_array($qey_result)) {
        $table_name = $g4['write_prefix'].$row['bo_table'];

        $sql_update = " UPDATE {$table_name} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
        sql_query($sql_update);
    }

    return true;
}

그누보드 4.36.27 버전을 기준으로 작성되었다.

munilive

munilive

Backend Application Developer

Share

Comments

Related Posts

GD를 이용한 기본기능 썸네일,CROP,CROP썸네일,텍스트 만들기에 기능추가

GD를 이용한 기본기능 썸네일,CROP,CROP썸네일,텍스트 만들기에 기능추가

GD Library를 이용한 Thumbnail 생성 클래스입니다. 기본적인 이미지 리사이징 및 리사이징과 동시에 비율에 맞춰 Crop 하는 기능이 있고, 워터마크를 추가 할 수…

munilive munilive ·
$_SERVER[QUERY_STRING] 특정 파라미터 삭제 출력하기

$_SERVER[QUERY_STRING] 특정 파라미터 삭제 출력하기

PHP의 를 이용하여 Get 방식의 Method 처리를 할 경우 특정 파라미터를 제거하거나 추가해 줘야 하는 경우가 있다. 보통 게시판의 페이징 작업을 할 때 주로 사용되는데,…

munilive munilive ·
php number format for javascript

php number format for javascript

PHP 함수로 존재하는 함수를 함수로 구현하였습니다. 사용방법은 php와 동일합니다.

munilive munilive ·