팁과노하우
출석부 로그인시 자동 출석 체크
사람들이 로그인 하면서 출석부 까먹고 있는 사람들도 있습니다.
저두 그렇 경우가 많네요^^
그냥 전 글쓰기보다 그냥 강제로 출석 체크 만들어 봤습니다.
$total_count = (int)$total_row['cnt']; 오류가 생기는분은 $total_count = isset($total_row['cnt']) ? (int)$total_row['cnt'] : 0; 이걸로 대체 해주세요.
rb/rb.mod/attendance
attend.lib.php
맨밑에 복사하시고 붙여 넣기 하세요.
// ----------------------------------------------------
// [추가된 기능] 로그인 성공 시 자동 출석 체크 함수
// ----------------------------------------------------
function rb_attend_auto_check($member) {
// $member 변수가 없거나 비어 있으면 실행하지 않음
if (!is_array($member) || empty($member['mb_id'])) return false;
// 입력 값 설정 (로그인 자동 출석이므로 내용은 기본값)
$content = '자동 로그인 출석 체크'; // 자동으로 입력 문자 값을 고쳐 주세요.
$mb_id = $member['mb_id'];
// 날짜 정규화
$ymd8 = rb_attend_norm_ymd8(defined('G5_TIME_YMD') ? G5_TIME_YMD : date('Ymd'));
$now = defined('G5_TIME_YMDHIS') ? G5_TIME_YMDHIS : date('Y-m-d H:i:s');
$ip = $_SERVER['REMOTE_ADDR'] ?? '';
// 중복 체크
if (rb_attend_is_checked_today($mb_id, $ymd8)) {
return ['status' => 'skip', 'msg' => '이미 출석 완료'];
}
// 설정과 순위
$cf = rb_attend_get_config();
$rank = rb_attend_pick_rank($ymd8);
// 저장 (attend.write.php의 핵심 SQL 로직)
sql_query("
INSERT INTO rb_attendance (mb_id, ymd, at_datetime, at_ip, at_content, at_rank)
VALUES (
'".sql_real_escape_string($mb_id)."',
'{$ymd8}',
'{$now}',
'".sql_real_escape_string($ip)."',
'".sql_real_escape_string($content)."',
".($rank ? (int)$rank : "NULL")."
)
");
$at_id = sql_insert_id();
// 참여 포인트 지급 (rel_act를 'autobase'로 변경하여 일반 출석과 중복 지급 방지)
$base = isset($cf['base_attend_point']) ? (int)$cf['base_attend_point'] : 0;
if ($base > 0) {
rb_attend_insert_point($mb_id, $base, '로그인 자동 출석 참여', G5_TIME_YMD.'-autobase', $at_id);
}
// 순위 보너스 포인트 (rel_act를 'autorank'로 변경하여 중복 지급 방지)
$awarded_bonus = 0;
if ($rank && $rank >= 1 && $rank <= 5) {
$bonus = 0;
if ($rank == 1) $bonus = (int)$cf['bonus_rank1'];
if ($rank == 2) $bonus = (int)$cf['bonus_rank2'];
if ($rank == 3) $bonus = (int)$cf['bonus_rank3'];
if ($rank == 4) $bonus = (int)$cf['bonus_rank4'];
if ($rank == 5) $bonus = (int)$cf['bonus_rank5'];
if ($bonus > 0) {
rb_attend_insert_point($mb_id, $bonus, '로그인 자동 출석 순위 보너스', G5_TIME_YMD.'-autorank', $at_id);
$awarded_bonus = $bonus;
}
}
// 연속 처리
$st = rb_attend_update_streak_and_award($mb_id, $ymd8, $cf);
return [
'status' => 'success',
'msg' => '로그인 자동 출석 완료!',
'rank' => $rank
];
}
bbs/login_check.php
// 선택필드 초기화
$sql = " update {$g5['g5_shop_cart_table']} set ct_select = '0' where od_id = '$s_cart_id' $add_cart_where ";
sql_query($sql);
}
위부분 찾아서 밑에 복사 하셔서 붙여넣기 하세요
// **↓↓↓↓↓↓ 자동 출석 체크 로직 삽입 ↓↓↓↓↓↓**
// 1. 출석부 라이브러리 파일 포함
include_once(G5_PATH.'/rb/rb.mod/attendance/attend.lib.php');
// 2. 자동 출석 함수 호출. $mb는 로그인 성공 시의 회원 정보입니다.
$attend_result = rb_attend_auto_check($mb);
// 3. (선택 사항) 다음 페이지로 출석 결과 메시지를 전달하기 위해 세션에 저장
if ($attend_result['status'] === 'success') {
$msg_text = $mb['mb_nick'] . '님, 로그인 시 자동 출석 체크 완료! ';
if ($attend_result['rank']) {
$msg_text .= ' ('.$attend_result['rank'].'등 달성)';
}
// 다음 페이지 (리디렉션 후 도착할 페이지)에서 출력할 세션 메시지에 저장
set_session('ss_attend_msg', $msg_text);
}
// **↑↑↑↑↑↑ 자동 출석 체크 로직 추가 끝 ↑↑↑↑↑↑**

- 이전글특정 상품 특정 결제만 가능하게 하는 방법2025.10.31
- 다음글디비 테이블 언어셋변경(utf8mb4_unicode_ci) - 'wr_datetime'의 유효하지 못한 디폴트 값을 사용하셨습니다. 오류 해결2025.10.25
댓글목록






Warning: Undefined array key "cnt" in /home1/jeju444/public_html/rb/rb.mod/attendance/attend.view.php on line 65
VIEW 는 손된게 없는데 왜 오류 나시는건지.. 모르겠고요..
attend.list.php 이것도 20라인도..
일단 혹시나 모르니 제거 올려드릴게요 파일
2025-10-28 22:13




