1년 동안 로그인하지 않은 장기 미접속 회원 포인트 일괄 초기화
최근 로그인 기록을 기준으로 1년 동안 로그인하지 않은 회원들의 포인트를 일괄적으로 초기화하는 방법입니다.
포인트는 단순히 회원 포인트 필드인 mb_point 값을 0으로 한다고 해서 초기화가 되는 건 아니고
포인트 테이블에 기록된 내역까지 전부 삭제해야 합니다.
테스트 서버에서 사전 테스트를 하거나 반드시 포인트 테이블을 별도로 백업하고 진행하세요.
신규 파일을 생성합니다.
파일 이름은 아무거나 상관없습니다. 예를 들어 point_reset.php
내용은 아래 point_reset.php 코드 전체를 복사해서 추가하고 그누보드가 설치된 곳에 올리고 실행하세요.
1년이 아닌 2년 전 기준으로 하려면 -1 years 여기를 -2 years 이렇게 수정.
월 단위로 설정하려면 -12 months 로 설정.
파일을 처음 실행하면 삭제 쿼리는 주석 처리해놔서 포인트는 바로 삭제되지 않고 회원 목록만 출력됩니다.
좌측 날짜가 각 회원의 최근 로그인 날짜입니다.
설정한 기간의 포인트 삭제 대상 회원이 제대로 출력된다면 아래 두 줄 주석 해제하고 새로고침하세요.
앞 부분 // 제거하면 됩니다. 주석 해제하고 새로고침하면 포인트 값이 초기화됩니다.
// sql_query(" delete from {$g5['point_table']} where mb_id = '{$row['mb_id']}' ");
// sql_query(" update {$g5['member_table']} set mb_point=0 where mb_id = '{$row['mb_id']}' ");
point_reset.php 파일 전체 내용
<?php
include_once('./_common.php');
$login_date = date('Y-m-d H:i:s', strtotime(G5_TIME_YMDHIS . ' -1 years'));
$sql_login = " select * 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']." 포인트 ".$row['mb_point']."<br>";
// 포인트 테이블값 삭제
// sql_query(" delete from {$g5['point_table']} where mb_id = '{$row['mb_id']}' ");
// 회원 포인트값을 0으로
// sql_query(" update {$g5['member_table']} set mb_point=0 where mb_id = '{$row['mb_id']}' ");
}
?>
처리할 양이 너무 많아서 문제가 생긴다면 -1 years 이 부분을 적당히 설정해서 처리량을 줄이고 순차적으로 삭제해보세요.
포인트 초기화 목적이 아닌 장기 미접속 회원을 삭제하고 싶으면 아래 팁을 참고하세요.
장기 미접속 회원 일괄 삭제 - 휴면 계정 정리
http://gnustudy.com/bbs/board.php?bo_table=gnu_tip&wr_id=278
## 참고 사항 ##
그누보드는 포인트 유효 기간을 설정할 수 있습니다. 포인트가 적립된 시점 기준입니다.
예를 들어 오늘 1000점을 적립했고 유효기간이 1년으로 설정되어 있다면
1년 동안 포인트 1000점을 사용하지 않으면 자동으로 소멸되는 방식입니다.
장기 미접속 회원의 포인트 정리와는 다른 용도이니 유의하세요.
관리자 페이지 > 환경 설정 > 기본 환경 설정 > 포인트 유효기간