회원 탈퇴와 삭제의 차이 - 그누보드팁

본문 바로가기
전체검색

그누보드팁

그누보드, 영카트 초보 제작자분들을 위한 다양한 스킨 제작 활용 팁을 공유합니다.

회원 탈퇴와 삭제의 차이

관리자 19-03-05 02:18

그누보드는 회원 탈퇴와 관련된 파일은 있지만 탈퇴 링크는 없어서 별도로 추가해야 합니다.

http://gnustudy.com/bbs/board.php?bo_table=skin_etc&wr_id=16

영카트는 마이페이지에 회원 탈퇴 버튼이 기본으로 있습니다.



1. 회원 탈퇴


bbs/member_leave.php 파일을 통해 탈퇴 처리됩니다.


해당 파일을 살펴보니 탈퇴하면 회원 정보 mb_leave_date 필드에 현재 날짜를 기록하고 있네요.


// 회원탈퇴일을 저장
$date = date("Ymd");
$sql = " update {$g5['member_table']} set mb_leave_date = '{$date}' where mb_id = '{$member['mb_id']}' ";
sql_query($sql);



그리고 로그인할 때 bbs/login_check.php 파일에서 mb_leave_date 필드 값을 체크해서 로그인을 차단합니다.


// 탈퇴한 아이디인가?
if ($mb['mb_leave_date'] && $mb['mb_leave_date'] <= date("Ymd", G5_SERVER_TIME)) {
    $date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1\\2\\3일", $mb['mb_leave_date']);
    alert('탈퇴한 아이디이므로 접근하실 수 없습니다.\n탈퇴일 : '.$date);
}




탈퇴한 회원이 로그인을 시도하면 아래와 같은 알림 메시지가 출력됩니다.


f6ff2a7876f915cf9ced0214f6488a68_1628902574_5608.png
 


탈퇴를 했더라도 회원 개인 정보는 즉시 삭제되지 않습니다.

개인 정보 삭제는 탈퇴 이후 회원 삭제 과정으로 넘어가야 처리됩니다.


탈퇴 후 별도로 설정된 기간이 경과하면 회원 삭제 과정으로 자동으로 넘어갑니다.

기간 설정은 관리자 페이지 > 환경설정 > 기본환경설정 > 회원탈퇴후 삭제일에서 변경할 수 있습니다.

기본 값은 30일로 되어 있네요.


0186e0a4b6eb9c685cf3e4a03089ce69_1551717652_7973.gif


30일 이후에 삭제하는 실행 코드는 bbs/db_table.optimize.php 파일에 있습니다.


// 탈퇴회원 자동 삭제
if($config['cf_leave_day'] > 0) {
    $sql = " select mb_id from {$g5['member_table']}
                where (TO_DAYS('".G5_TIME_YMDHIS."') - TO_DAYS(mb_leave_date)) > '{$config['cf_leave_day']}'
                  and mb_memo not regexp '^[0-9]{8}.*삭제함' ";
    $result = sql_query($sql);
    while ($row=sql_fetch_array($result))
    {
        // 회원자료 삭제
        member_delete($row['mb_id']);
    }
}



* 유의사항

자동 삭제의 문제점이 있는데 온전한 자동 삭제는 아니고 관리자가 로그인을 해야 자동 삭제 파일이 실행됩니다.

설정 날짜가 지났는데 삭제가 안 된다면 관리자 로그인을 했었는지 확인해보세요.

관리자가 주기적으로 사이트에 로그인도 하지 않고 방치하면 위 자동 삭제 코드는 실행되지 않습니다.

Cron 처럼 작동하지 않고 관리자가 로그인을 해야 실행되는 점 유의하세요.


관리자가 당일 사이트에 첫 로그인했을 때 규모가 큰 사이트라면 약간의 딜레이가 생길 수가 있는데

그 원인 중 하나가 bbs/db_table.optimize.php 파일에 있는 자동 삭제 처리 때문입니다.

해당 파일 내용을 살펴보면 여러 정보들이 일괄 삭제 처리됩니다.

로그인할 때마다 실행되진 않고 하루 한 번 첫 로그인할 때만 실행됩니다.




30일 이전에 관리자 페이지 > 해당 회원 정보 수정 페이지에서

탈퇴일자 입력 값을 삭제하고 빈 값으로 수정하면 탈퇴는 취소되고 정상 회원으로 즉시 복구됩니다.

(유의사항 : 기간이 지나서 이미 삭제된 회원은 복구 불가능합니다.)


0186e0a4b6eb9c685cf3e4a03089ce69_1551717746_3569.gif
 


탈퇴 후 30일이 지나서 회원 정보가 삭제된 회원이 로그인을 시도하면 아래와 같은 알림 메시지가 출력됩니다.

30일 이전에는 탈퇴 날짜가 출력됐었는데 이제 그런 정보는 나오지 않습니다.


f6ff2a7876f915cf9ced0214f6488a68_1628902755_4704.png
 



2. 회원 삭제


탈퇴 과정에서는 유예 기간이 있었지만 회원 삭제는 즉시 삭제 처리됩니다.

즉시 삭제는 회원 관리 페이지에서 관리자만 할 수 있습니다.

(탈퇴 후 30일이 경과된 회원들도 동일하게 아래 함수로 자동 삭제 처리됩니다.)


회원 삭제와 관련된 함수는 lib/common.lib.php 파일에 있습니다.


// 회원 삭제
function member_delete($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}' ";



보관되는 정보 : 회원아이디, 이름, 닉네임, 회원가입일, 최근접속일, 가입당시 IP, 탈퇴일자


삭제 함수 내용을 세부적으로 살펴보면 회원 아이디는 다른 사람이 재사용 못하게 남겨두고 있습니다.

레벨은 1로 바뀌고 아이디, 이름, 닉네임을 제외한 정보들은 모두 빈 값으로 변경됩니다.

그리고 mb_memo 필드에 '삭제한 날짜와 삭제함' 문구가 기록됩니다.

아이디는 남겨두기 때문에 회원 목록 페이지에서는 삭제되지 않습니다.


8996866d0fad0030209cef29eb64574c_1554290992_9536.png 


만약 회원 목록에서도 나오지 않게 완전히 삭제하려면 위 함수를 이렇게 수정하면 됩니다.

http://gnustudy.com/bbs/board.php?bo_table=gnu_tip&wr_id=104 

일반 회원들의 아이디는 가급적 완전히 삭제하지 마시고 테스트 회원이나 스팸 회원들 삭제할 때 사용하면 될 것 같습니다.




부가적으로 회원 삭제 시 아래 내용들도 같이 삭제됩니다.

포인트, 쪽지, 스크랩 등이 포함되어 있습니다.



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

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');

로그인 후 댓글 작성 가능합니다.

로그인

로그인 후 글 작성 가능합니다.
그누스킨닷컴

그누스터디는 그누보드, 영카트를 이용하시는 초보 사용자를 위한 정보를 공유합니다.

E-MAIL : gnustudy@naver.com / 카카오톡 : gnustudy / 텔레그램 : gnustudy
제작 문의를 제외한 일반 문의는 QA 게시판을 이용해주세요.

Copyright gnustudy.com All rights reserved.