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

그누위즈 쪽지보내기 포인트선물 메일보내기 자기소개 아이디로 검색 전체게시물 관리자 팁 17-05-22 14:45 2,892

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

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

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

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

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

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

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

 

우선은 회원탈퇴시 처리되는 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' ");

}

?>

추천 0 비추천 0
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 밴드 보내기
  • 블로그 보내기
  • 폴라 보내기
  • 카카오스토리 보내기
  • 텔레그램 보내기
  • 텀블러 보내기
댓글 0

관리자

RSS
번호 제목 글쓴이 날짜 추천 비추천
상단으로