[관리] 회원탈퇴시 보관없이 회원 삭제(동일 아이디 가입가능) > 정보공유

본문 바로가기

정보공유

일반글
그누보드팁

[관리] 회원탈퇴시 보관없이 회원 삭제(동일 아이디 가입가능)

페이지 정보

게시물QR코드

본문

그누보드의 관리자페이지에 보시면 회원관리 메뉴가 있습니다.

기본 그누보드의 경우에는 회원관리 메뉴에서 회원을 탈퇴 처리 하게되면

회원의 모든 정보는 지워지고 회원의 아이디는 목록에 그대로 저장됩니다.

그누보드의 기본적인 회원관리 시스템에서는

탈퇴한 아이디가 정보는 지워지지만 목록에 남아있기 때문에 같은 아이디로 재가입이 불가능 합니다.

이러한 부분에서 탈퇴한 회원의 정보를 삭제 처리하고

재가입이 불가능하도록 남기지않고 재가입이 가능하도록 약간의 소스코드를 수정해서 기능을 수정해 보겠습니다.

 

우선은 회원탈퇴시 처리되는 member_delete()함수를 살펴보겠습니다.

<?php

/* www/lib/common.lib.php */

 

// 회원 삭제

function member_delete($mb_id)

{

    global $config;

    global $g5;

 

    $sql = " select mb_name, mb_nick, mb_ip, mb_recommend, mb_memo, mb_level from {$g5['member_table']} where mb_id= '".$mb_id."' ";

    $mb = sql_fetch($sql);

 

    // 이미 삭제된 회원은 제외

    if(preg_match('#^[0-9]{8}.*삭제함#', $mb['mb_memo']))

        return;

 

    if ($mb['mb_recommend']) {

        $row = sql_fetch(" select count(*) as cnt from {$g5['member_table']} where mb_id = '".addslashes($mb['mb_recommend'])."' ");

        if ($row['cnt'])

            insert_point($mb['mb_recommend'], $config['cf_recommend_point'] * (-1), $mb_id.'님의 회원자료 삭제로 인한 추천인 포인트 반환', "@member", $mb['mb_recommend'], $mb_id.' 추천인 삭제');

    }

 

    // 회원자료는 정보만 없앤 후 아이디는 보관하여 다른 사람이 사용하지 못하도록 함 : 061025

    $sql = " update {$g5['member_table']} set mb_password = '', mb_level = 1, mb_email = '', mb_homepage = '', mb_tel = '', mb_hp = '', mb_zip1 = '', mb_zip2 = '', mb_addr1 = '', mb_addr2 = '', mb_birth = '', mb_sex = '', mb_signature = '', mb_memo = '".date('Ymd', G5_SERVER_TIME)." 삭제함\n{$mb['mb_memo']}' where mb_id = '{$mb_id}' ";

    sql_query($sql);

 

    // 포인트 테이블에서 삭제

    sql_query(" delete from {$g5['point_table']} where mb_id = '$mb_id' ");

 

    // 그룹접근가능 삭제

    sql_query(" delete from {$g5['group_member_table']} where mb_id = '$mb_id' ");

 

    // 쪽지 삭제

    sql_query(" delete from {$g5['memo_table']} where me_recv_mb_id = '$mb_id' or me_send_mb_id = '$mb_id' ");

 

    // 스크랩 삭제

    sql_query(" delete from {$g5['scrap_table']} where mb_id = '$mb_id' ");

 

    // 관리권한 삭제

    sql_query(" delete from {$g5['auth_table']} where mb_id = '$mb_id' ");

 

    // 그룹관리자인 경우 그룹관리자를 공백으로

    sql_query(" update {$g5['group_table']} set gr_admin = '' where gr_admin = '$mb_id' ");

 

    // 게시판관리자인 경우 게시판관리자를 공백으로

    sql_query(" update {$g5['board_table']} set bo_admin = '' where bo_admin = '$mb_id' ");

 

    // 아이콘 삭제

    @unlink(G5_DATA_PATH.'/member/'.substr($mb_id,0,2).'/'.$mb_id.'.gif');

}

?>

 

위의 함수에 보면

<?php

// 회원자료는 정보만 없앤 후 아이디는 보관하여 다른 사람이 사용하지 못하도록 함 : 061025

$sql = " update {$g5['member_table']} set mb_password = '', mb_level = 1, mb_email = '', mb_homepage = '', mb_tel = '', mb_hp = '', mb_zip1 = '', mb_zip2 = '', mb_addr1 = '', mb_addr2 = '', mb_birth = '', mb_sex = '', mb_signature = '', mb_memo = '".date('Ymd', G5_SERVER_TIME)." 삭제함\n{$mb['mb_memo']}' where mb_id = '{$mb_id}' ";

sql_query($sql);

?>

회원자료는 정보만 없앤 후 아이디를 보관하는 소스코드가 들어있습니다.

여기 소스코드부분을 삭제 처리하도록 바꾸면 되는데요.

 

아래와 같이 해당 소스코드 부분은 주석 처리 하고 소스 아랫부분에 새로운 소스코드를 넣도록 하겠습니다.

// 회원자료는 정보만 없앤 후 아이디는 보관하여 다른 사람이 사용하지 못하도록 함 : 061025

//$sql = " update {$g5['member_table']} set mb_password = '', mb_level = 1, mb_email = '', mb_homepage = '', mb_tel = '', mb_hp = '', mb_zip1 = '', mb_zip2 = '', mb_addr1 = '', mb_addr2 = '', mb_birth = '', mb_sex = '', mb_signature = '', mb_memo = '".date('Ymd', G5_SERVER_TIME)." 삭제함\n{$mb['mb_memo']}' where mb_id = '{$mb_id}' ";

$sql = " delete from {$g5['member_table']} where mb_id = '{$mb_id}' ";

sql_query($sql);

위와같이 탈퇴한 회원을 db에서 삭제 하도록 쿼리문을 수정 하였습니다.

그러면 앞으로 탈퇴된 회원은 즉시 회원 테이블에서 삭제 되겠습니다.

 

하지만 이렇게 소스코드를 구성하시면 동일 아이디로 다른 사람이 가입하게되면

이전에 동일 회원아이디로 작성한 게시글은 남아 있기 때문에 새로운 회원이 이전 게시글을 수정, 삭제를 할 수 있습니다.

이런 부분 또한 사전에 방지 하고 싶다면

아래와같이 member_delete()함수에 게시물 삭제 소스코드를 추가하여 구성 할 수 있겠습니다.

<?php

// 최근게시물 삭제

sql_query(" delete from {$g5['board_new_table']} where mb_id = '$mb_id' ");

 

// 게시물 삭제

$sql = " select * from {$g5['board_table']} ";

$result = sql_query($sql);

for ($i=0; $row=sql_fetch_array($result); $i++) {

$board_table = $g5['write_prefix'] . $row['bo_table']; // 게시판 테이블 전체이름

    sql_query(" delete from {$board_table} where mb_id = '$mb_id' ");

}

?>

댓글목록

등록된 댓글이 없습니다.

  • Addr.부산광역시 부산진구 중앙대로 666번길 50, 더샵센트럴스타 CEO. 이경애 Email. gnuwiz@naver.com
  • BR. 625-68-00172 TRC. 2019-부산해운대-1186 TEL. 0507-1382-2790
Copyright © 2017 ~ 그누위즈. All rights reserved.