회원탈퇴시 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
0
댓글 7개

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

문제는 게시물등 그대로 남아있으니
같은 아이디로 재가입하면 기존 데이터의 접근이 가능하니
그것을도 다 지우는게 문제죠^^;;

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

@지구버스 지우는건 귀찮다?라면, 아예 아이디를 임의아이디로 변경해버리는 것도 좋은 방법일 것 같습니다
예를 들어 abcd 라는 아이디가 있다면 leave_abcd 로 강제 변경 그럼...어차피 로그인 못하니...? 뭐 물론 위에 언급한 문제도 있겟지만요 ㅎㅎ

참고로 공공기간에서 탈퇴하면 DB에 존재합니다.
관리자페이지 회원목록에서 볼수 없습니다.
중복가입 방지를 하기 위해서 제한합니다.

관리자에 회원리스트 관리에 회원삭제에 유사한게잇어서 추가하엿습니다.

$sql="delete from g5_member where mb_id='".$member['mb_id']."'";
이거를 가장 마지막에 실행해야겠죠.
그렇지 않으면 아이디가 이미 삭제되서 포인트 등 삭제할 근거가 사라집니다.
g5_member 는 {$g5['member_table']} 로 변경해야겠네요