회원탈퇴시 update 아니고 delete로 처리하는 방법 > 그누보드5 팁자료실

그누보드5 팁자료실

회원탈퇴시 update 아니고 delete로 처리하는 방법 정보

회원탈퇴시 update 아니고 delete로 처리하는 방법

본문

회원을 가끔 전체를 날려야하는경우가 생겨서 찾다가 알게되서 공유드립니다.

 

/bbs/member_leave.php 파일 

 

기존소스


// 회원탈퇴일을 저장
$date = date("Ymd");
$sql = " update {$g5['member_table']} set mb_leave_date = '{$date}', mb_memo = '".date('Ymd', G5_SERVER_TIME)." 탈퇴함\n".sql_real_escape_string($member['mb_memo'])."', mb_certify = '', mb_adult = 0, mb_dupinfo = '' where mb_id = '{$member['mb_id']}' ";
sql_query($sql);

 


$sql="delete from g5_member where mb_id='".$member['mb_id']."'";
sql_query($sql);

 

 

 

-- 추가내용-  관리자의 회원리스트에 선택삭제부분에 해당유사한 부분이있어서 추가합니다.

 

  member_delete($mb['mb_id']);

 

/lib/common.lib.php  3603라인에

 


// 회원 삭제
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_addr3 = '', mb_point = 0, mb_profile = '', mb_birth = '', mb_sex = '', mb_signature = '', mb_memo = '" . date('Ymd', G5_SERVER_TIME) . " 삭제함\n" . sql_real_escape_string($mb['mb_memo']) . "', mb_certify = '', mb_adult = 0, mb_dupinfo = '' where mb_id = '{$mb_id}' ";
 
//이부분을 수정하면될것 같습니다.

$sql="delete from g5_member where mb_id='".$member['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' ");
    //소셜로그인에서 삭제 또는 해제
    if (function_exists('social_member_link_delete')) {
        social_member_link_delete($mb_id);
    }
    // 아이콘 삭제
    @unlink(G5_DATA_PATH . '/member/' . substr($mb_id, 0, 2) . '/' . $mb_id . '.gif');
    // 프로필 이미지 삭제
    @unlink(G5_DATA_PATH . '/member_image/' . substr($mb_id, 0, 2) . '/' . $mb_id . '.gif');
    run_event('member_delete_after', $mb_id);
}

 

추천
0

댓글 7개

이거 단순 삭제도 신중해야 해요 

왜냐면 저 탈퇴 사용자가 글쓴거 / 포인트 내역 / 로그인 내역 / 쪽지 내역 / 스크랩 내역 / 이런건 고스란히 그대로 남아있기 때문에 흔히 디비 찌꺼기로 남아있어서 처리를 해야 되는 요소까지 고려 하셔야 합니다.

문제는 게시물등 그대로 남아있으니

같은 아이디로 재가입하면 기존 데이터의 접근이 가능하니

그것을도 다 지우는게 문제죠^^;;

좋은의견이시네요. 운영정책에 따라 해당 회원이 작성하신 게시물이나 포인트등 관련 자료에 대한 부분에 대한 확인까지 필요해보입니다. 

@지구버스 지우는건 귀찮다?라면, 아예 아이디를 임의아이디로 변경해버리는 것도 좋은 방법일 것 같습니다

 

예를 들어 abcd 라는 아이디가 있다면 leave_abcd 로 강제 변경 그럼...어차피 로그인 못하니...? 뭐 물론 위에 언급한 문제도 있겟지만요 ㅎㅎ

참고로 공공기간에서 탈퇴하면 DB에 존재합니다.

관리자페이지 회원목록에서 볼수 없습니다.

중복가입 방지를 하기 위해서 제한합니다.

$sql="delete from g5_member where mb_id='".$member['mb_id']."'";

이거를 가장 마지막에 실행해야겠죠.
그렇지 않으면 아이디가 이미 삭제되서 포인트 등 삭제할 근거가 사라집니다.

g5_member 는 {$g5['member_table']} 로 변경해야겠네요
전체 2,724 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT