
팁과노하우
[멤버십] 탈퇴한 회원의 경우 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 으로 반환은 하지만, 메시지가 반환 되지 않는 구조라, 어쩔 수 없이
자바스크립트를 통해 수정해야 합니다.

수정 해야 될 부분은 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'] !== '';
스크린샷은 다음과 같습니다.

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

마지막으로 자신을 구독할 수 없습니다. 라는 스크립트 구문에 else if 를 추가 합니다.
}else if(is_leave) {
alert('탈퇴한 회원입니다.');
return false;
} else {
스크린샷은 다음과 같습니다.

이렇게 하시면 구독 및 탈퇴한 회원의 홈 접근을 막을 수 있습니다.
고맙습니다.
- 이전글게시판 공지사항 색상으로 강조하기2025.03.12
- 다음글[수정][멤버십] PHP8 에서 구독 + 서명 사용 시 오류 수정2025.03.12
댓글목록

