장기 미접속 회원 일괄 삭제 - 휴면 계정 정리 - 그누보드팁

본문 바로가기
전체검색

그누보드팁

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

장기 미접속 회원 일괄 삭제 - 휴면 계정 정리

관리자 19-09-15 01:05

최근 로그인 기록을 체크해서 장기 미접속 회원들을 일괄적으로 삭제하는 방법입니다.

두 가지 방법으로 살펴보겠습니다.


샘플은 1년으로 설정되어 있습니다. 1년이 아닌 2년 기준으로 하려면 -1 years 여기를 -2 years 이렇게 수정.

월 단위로 설정하려면 -12 months 로 설정.



혹시 모르니 반드시 DB는 백업하고 진행하세요.


처리할 양이 너무 많아서 문제가 생긴다면 한꺼번에 하기보다는 -1 years 기간 설정 부분을 여유 있게 설정해서 처리량을 줄이고 순차적으로 삭제해보세요.




1. 그누보드 기본 회원 삭제 함수를 사용


회원 정보는 삭제되지만 회원 아이디는 DB에 그대로 남아서 기존 아이디로 재 가입할 수 없습니다.

일반적으로 많이 사용하는 처리 방식입니다. 회원 목록에서도 없어지지 않고 그대로 남습니다.

기본 삭제 함수와 관련된 건 아래 팁을 읽어보시면 자세하게 설명되어 있습니다.

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




<?php
include_once('./_common.php');
$login_date = date('Y-m-d H:i:s', strtotime(G5_TIME_YMDHIS . ' -1 years'));
$sql_login = " select mb_id, mb_today_login from {$g5['member_table']} where mb_today_login < '$login_date' order by mb_today_login desc ";
$result = sql_query($sql_login);
for ($i=0; $row=sql_fetch_array($result); $i++) {
    echo $row['mb_today_login']." ".$row['mb_id']."<br>";
    // 회원 삭제
    // member_delete($row['mb_id']);
}
?>


새로 파일을 생성 후 위 코드를 그대로 넣고 그누보드가 설치된 경로에 올린 후 실행하면 삭제 대상 회원 아이디가 출력됩니다.

출력된 회원 목록에서 앞 부분이 최근 로그인 날짜입니다.

설정한 기간의 삭제 대상 회원이 제대로 출력된다면 아래 코드 주석 해제하고 새로 고침하세요.

앞 부분 // 제거하면 됩니다.


// member_delete($row['mb_id']);





2. 회원 아이디까지 완전히 삭제하는 방법


회원 목록에서도 안 보이게 완전히 삭제합니다. 삭제한 아이디로 재 가입도 가능합니다.


방법은 동일합니다. 새로 파일을 생성 후 아래 코드를 그대로 추가하고 실행해서

설정한 기간의 회원 목록이 정상적으로 출력되면 주석 해제하고 새로 고침하면 즉시 삭제됩니다.


여기서의 주석 해제 방법은 위에서 말한 1번 방법과는 차이가 있습니다.


// 이 부분은 건드리지 마시고


/* 여기와

*/ 여기 두 군데만 삭제하세요.


원본 기준으로 그누보드 5.2 이하 버전은 소셜 로그인과 프로필 이미지 관련 코드는 삭제하고 사용하세요.

해당 부분은 5.3 버전부터 추가된 기능입니다.




<?php
include_once('./_common.php');
$login_date = date('Y-m-d H:i:s', strtotime(G5_TIME_YMDHIS . ' -1 years'));
$sql_login = " select mb_id, mb_today_login from {$g5['member_table']} where mb_today_login < '$login_date' order by mb_today_login desc ";
$result = sql_query($sql_login);
for ($i=0; $row=sql_fetch_array($result); $i++) {
    echo $row['mb_today_login']." ".$row['mb_id']."<br>";

    /*
    // 회원 삭제
    sql_query(" delete from {$g5['member_table']} where mb_id = '{$row['mb_id']}' ");

    // 포인트 테이블에서 삭제
    sql_query(" delete from {$g5['point_table']} where mb_id = '{$row['mb_id']}' ");

    // 그룹접근가능 삭제
    sql_query(" delete from {$g5['group_member_table']} where mb_id = '{$row['mb_id']}' ");

    // 쪽지 삭제
    sql_query(" delete from {$g5['memo_table']} where me_recv_mb_id = '{$row['mb_id']}' or me_send_mb_id = '{$row['mb_id']}' ");

    // 스크랩 삭제
    sql_query(" delete from {$g5['scrap_table']} where mb_id = '{$row['mb_id']}' ");

    // 관리권한 삭제
    sql_query(" delete from {$g5['auth_table']} where mb_id = '{$row['mb_id']}' ");

    // 그룹관리자인 경우 그룹관리자를 공백으로
    sql_query(" update {$g5['group_table']} set gr_admin = '' where gr_admin = '{$row['mb_id']}' ");

    // 게시판관리자인 경우 게시판관리자를 공백으로
    sql_query(" update {$g5['board_table']} set bo_admin = '' where bo_admin = '{$row['mb_id']}' ");

    //소셜로그인에서 삭제 또는 해제
    if(function_exists('social_member_link_delete')){
        social_member_link_delete($row['mb_id']);
    }

    // 아이콘 삭제
    @unlink(G5_DATA_PATH.'/member/'.substr($row['mb_id'],0,2).'/'.$row['mb_id'].'.gif');

    // 프로필 이미지 삭제
    @unlink(G5_DATA_PATH.'/member_image/'.substr($row['mb_id'],0,2).'/'.$row['mb_id'].'.gif');
    */
}
?>



## 참고 사항 ##


회원 아이디까지 완전히 삭제하는 또 다른 방법은..

아래 팁을 우선 적용 후

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


2번이 아닌 1번 방법으로 해도 완전 삭제가 가능합니다.

팁 내용에 있는 lib/common.lib.php 파일의 회원 삭제 함수를 보면 2번에 있는 코드 내용들과 대부분 동일합니다.

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

로그인

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

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

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

Copyright © GNUSTUDY. All rights reserved.