팁과노하우

2025.03.12 14:19

[멤버십] 탈퇴한 회원의 경우 home 접근 / 구독 정보 삭제

안녕하세요...
미니님a입니다.

게시판 보다가 https://rebuilder.co.kr/qna/2303

내용을 보면서 버그로 판단 되는 부분을 빠르게 수정 하였습니다.
권한은 일단 패스하고

1. 또한 실제로 없는 아이디의 경우와 탈퇴한 경우에도 구독버튼이 정상 작동하는 문제도 보입니다.

이 부분 해결 해보겠습니다.

먼저 rb/home.php 파일을 열어주세요

그리고 19번 라인 다음에 (회원정보가 존재하지 않는다)
아래 코드를 넣어주세요
// 탈퇴한 회원인지 확인
if (!empty($mb['mb_leave_date'])) {
    alert('탈퇴한 회원입니다.', G5_URL);
}


===========================================
여기서부터는 멤버십 내용입니다.

회원 탈퇴 시 구독자가 줄어들지 않고 탈퇴한 사용자 이름이 그대로 있는 버그가 있어 수정하였습니다.
extend/rb_subscribe.extend.php 파일을 열어주세요

맨 하단에 훅을 이용해 회원 탈퇴 시 구독 리스트에서 삭제하는 코드입니다.
맨 하단에 그냥 코드 그대로 넣어주시면 됩니다.


add_event('member_leave', 'sb_member_leave', G5_HOOK_DEFAULT_PRIORITY, 1);


function sb_member_leave($member) {
    global $g5;
    $sql = "DELETE FROM rb_subscribe WHERE sb_mb_id = '{$member['mb_id']}'";
    sql_query($sql);
}

또한 회원 탈퇴가 된 경우, 구독을 할 수 없도록 수정하여야 합니다.
제작된 원본 코드는 json 으로 반환은 하지만, 메시지가 반환 되지 않는 구조라, 어쩔 수 없이 
자바스크립트를 통해 수정해야 합니다. 

Uploaded Image



수정 해야 될 부분은 2곳입니다.
rb/rb.mod/subscribe/subscribe.skin.php
rb/rb.mod/subscribe/subscribe_my.skin.php

2개의파일 동일하게 수정해주시면 됩니다.

5번 라인에 2줄을 넣어주세요
$sb_mb = get_member($sb_mb_id);
$is_leave = $sb_mb['mb_leave_date'] && $sb_mb['mb_leave_date'] !== '';

스크린샷은 다음과 같습니다.

Uploaded Image


그리고 밑에 <a class 되어있는 부분의 onclick 이벤트에서 is_leave 를 추가해주셔야 합니다.

onclick="subscribe_add('<?php echo $member['mb_id'] ?>', '<?php echo $sb_mb_id ?>', '<?php echo $is_leave ?>');"

Uploaded Image



마지막으로 자신을 구독할 수 없습니다. 라는 스크립트 구문에 else if 를 추가 합니다.

}else if(is_leave) {
 alert('탈퇴한 회원입니다.');
 return false;
} else {

스크린샷은 다음과 같습니다.
Uploaded Image



이렇게 하시면 구독 및 탈퇴한 회원의 홈 접근을 막을 수 있습니다.
고맙습니다.




  • 공유링크 복사
    미니홈 쪽지 구독하기
    구독하고 알림받기

    댓글목록

    profile_image
    리빌더미니홈 1:1 대화하기  오래 전

    고맙습니다.
    해당부분도 반영해보겠습니다.
    항상 감사합니다.

    편안한 하루 되세요.

    2025-03-12 20:33

    profile_image
    리빌더미니홈 1:1 대화하기  오래 전

    1.1.3 버전에서 적용되었습니다.
    알려주셔서 고맙습니다.

    2025-05-16 04:56