


개요
게시판별로 회원 1명이 하루에 작성할 수 있는 게시글 횟수를 제한하는 플러그인입니다.
예를 들어 "자유게시판"에 하루 5회로 설정하면, 해당 회원이 당일 5개를 작성한 이후에는 "오늘 게시글 작성 한도에 도달했습니다. 내일 다시 이용해주세요." 안내와 함께 차단됩니다.
자정(00:00)이 지나면 크론잡 없이 자동으로 횟수가 초기화됩니다.
관리자 계정은 제한에서 제외되며 코어 파일은 수정하지 않습니다.
주요 기능
- 게시판별 독립적인 하루 최대 작성 횟수 설정
- 자정(00:00) 자동 갱신 — 별도 크론잡 불필요
- 한도 초과 시 글쓰기 화면 접근 차단 (1차) + POST 직접 제출 차단 (2차)
- 게시글 수정(edit)은 제한 없음 — 기존 글 수정은 항상 허용
- 차단 안내 메시지 게시판별 개별 설정
- 관리자 화면: 오늘 현황 바 차트 (정상·80% 이상·한도초과 색상 구분)
- 관리자 계정 완전 제외
설치 방법
1단계 — 파일 업로드
plugins/
└── dx-daily-post-limit/
├── manifest.php
├── plugin.php
├── core/
│ ├── install.php
│ └── helper.php
└── admin/
└── index.php
dx-daily-post-limit 폴더 전체를 서버의 plugins/ 디렉터리에 업로드합니다.
2단계 — 플러그인 활성화
- DXCMS 관리자 > 플러그인 클릭
- "DX 일일 게시글 제한" 항목에서 활성화 클릭
- 활성화 시 DB 테이블이 자동 생성됩니다.
3단계 — 게시판 설정
- 관리자 좌측 메뉴 게시판 > 일일 게시글 제한 클릭
- 설정할 게시판의 설정 버튼 클릭
- 항목 입력 후 저장
관리자 화면 사용법
관리자 URL: /admin/daily-post-limit
게시판별 설정 메뉴
게시판명 또는 설정 버튼을 클릭하면 인라인으로 설정 패널이 펼쳐집니다.
| 설정 항목 | 설명 | 기본값 |
|---|---|---|
| 일일 제한 활성화 | 해당 게시판의 하루 제한 기능 ON/OFF | OFF |
| 하루 최대 횟수 | 회원 1명이 하루에 작성 가능한 최대 횟수 | 5회 |
| 차단 안내 메시지 | 한도 초과 시 표시할 메시지 | 기본 메시지 |
오늘 작성 현황 (설정 패널 내)
설정 패널 안에 오늘 작성 상위 10명의 바 차트가 실시간으로 표시됩니다.
| 색상 | 의미 |
|---|---|
| 🔵 파란색 | 정상 (80% 미만) |
| 🟡 주황색 | 거의 찼음 (80% 이상) |
| 🔴 빨간색 | 한도 초과 |
오늘 현황 메뉴
전체 게시판의 오늘 작성 현황을 한눈에 확인합니다. 게시판 KEY로 필터링 가능합니다.
동작 흐름
회원이 글쓰기 버튼 클릭
│
▼
관리자 계정? ─Yes─▶ 제한 없이 글쓰기 가능
│ No
▼
해당 게시판 제한 활성화? ─No─▶ 제한 없이 글쓰기 가능
│ Yes
▼
오늘 작성 횟수 >= 하루 최대?
│ Yes │ No
▼ ▼
[글쓰기 차단 에러 화면] 글쓰기 화면 정상 표시
- 오늘 N회 / 최대 N회 │
- "내일 다시 이용해주세요" ▼
글 저장 직전 2차 검증
│
▼
정상 저장 완료
│
▼
오늘 카운트 +1
자동 갱신 원리
크론잡(Cron Job)이나 별도 스케줄러 없이 자정이 지나면 자동으로 횟수가 초기화됩니다.
daily_post_count 테이블 구조
┌──────────┬───────────┬────────────┬───────┐
│ board_id │ member_id │ write_date │ count │
├──────────┼───────────┼────────────┼───────┤
│ 1 │ 42 │ 2026-07-16 │ 3 │ ← 오늘 기록
│ 1 │ 42 │ 2026-07-17 │ 0 │ ← 내일이 되면 새 레코드
└──────────┴───────────┴────────────┴───────┘
조회 시 항상 "오늘 날짜(date('Y-m-d'))"로만 조회
→ 자정이 지나면 새 날짜 레코드를 사용
→ 자동으로 0에서 시작
차단 2단계
| 단계 | 훅 | 시점 |
|---|---|---|
| 1차 | dx_board_write_context |
글쓰기 화면 렌더링 전 |
| 2차 | dx_board_before_save |
글 저장 직전 |
카운트 기준
| 상황 | 카운트 처리 |
|---|---|
| 신규 글 저장 완료 | +1 증가 (dx_board_after_save 훅) |
| 글 수정 (edit) | 카운트 변동 없음 |
| 자정 경과 | 새 날짜로 자동 0 시작 |
| 관리자 작성 | 카운트 안 함 |
| 글 삭제 | 카운트 감소 없음 (당일 제한은 유지) |
삭제된 글은 당일 카운트에 영향을 주지 않습니다. 오늘 3개를 작성하고 2개를 삭제해도 오늘은 3회로 기록됩니다.
차단 메시지 예시
기본 메시지:
오늘 게시글 작성 한도(5회)에 도달했습니다. 내일 다시 이용해주세요.
(오늘 5회 / 최대 5회)
커스텀 메시지 설정 예:
하루 최대 3개까지만 등록 가능합니다. 내일 0시 이후 다시 시도해 주세요.
제거 방법
- DXCMS 관리자 > 플러그인에서 비활성화
- 서버에서
plugins/dx-daily-post-limit/폴더 삭제 - DB 테이블 삭제 (선택):
DROP TABLE IF EXISTS `{prefix}daily_post_limit_settings`;
DROP TABLE IF EXISTS `{prefix}daily_post_count`;
{prefix}는 DXCMS DB 테이블 접두사로 대체하세요. (기본값:dx_)
기술 정보
| 항목 | 내용 |
|---|---|
| 사용 훅 | dx_extend_top (1), dx_board_write_context (10), dx_board_before_save (1), dx_board_after_save (10), dx_admin_top (1) |
| 갱신 방식 | 날짜별 별도 레코드 — 크론잡 불필요 |
| DB 테이블 | daily_post_limit_settings, daily_post_count |
| 코어 파일 수정 | 없음 |
| 관리자 URL | /admin/daily-post-limit |
자주 묻는 질문
Q. 크론잡(Cron Job) 설정이 필요한가요?
A. 아닙니다. 날짜별로 레코드를 별도 저장하는 구조라 자정이 지나면 자동으로 새 날짜가 적용됩니다.
Q. 오늘 작성한 글을 삭제하면 횟수가 줄어드나요?
A. 아닙니다. 삭제해도 오늘의 작성 횟수는 그대로 유지됩니다. 다음날 자정이 지나야 초기화됩니다.
Q. 글 수정은 가능한가요?
A. 네. 수정(edit)은 새 글 작성이 아니므로 한도와 관계없이 항상 가능합니다.
Q. 하루 제한을 1회로 설정하면 하루에 1개만 쓸 수 있나요?
A. 맞습니다. 하루 1개 제한이 필요한 게시판(오늘의 한마디, 일기, 출석부 등)에 활용할 수 있습니다.
Q. 여러 게시판에 다른 횟수로 설정할 수 있나요?
A. 네. 게시판별로 독립적으로 설정합니다. A게시판은 5회, B게시판은 1회 등 다르게 설정할 수 있습니다.
Q. 과거 날짜의 데이터가 계속 쌓이지 않나요?
A. daily_post_count 테이블에 날짜별 레코드가 누적됩니다. 주기적으로 오래된 데이터를 정리하려면 아래 SQL을 실행하세요.
-- 30일 이전 데이터 삭제
DELETE FROM `{prefix}daily_post_count`
WHERE write_date < DATE_SUB(CURDATE(), INTERVAL 30 DAY);
https://dxcmsboard.com
관리자 아이디 : admin / 비밀번호 : 12341234