회원가입 | 고객센터 |
DESIGNONEX
dxcms.kr
DX빌더
DX마켓
Service
PR리그
Q&AN
지식공유
공지사항
통계
로그인 회원가입
고객센터

DX 일일 게시글 제한 플러그인

D DX관리자
2026.07.17 02:34(수정됨) 2 0





개요

게시판별로 회원 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단계 — 플러그인 활성화

  1. DXCMS 관리자 > 플러그인 클릭
  2. "DX 일일 게시글 제한" 항목에서 활성화 클릭
  3. 활성화 시 DB 테이블이 자동 생성됩니다.

3단계 — 게시판 설정

  1. 관리자 좌측 메뉴 게시판 > 일일 게시글 제한 클릭
  2. 설정할 게시판의 설정 버튼 클릭
  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시 이후 다시 시도해 주세요.


제거 방법

  1. DXCMS 관리자 > 플러그인에서 비활성화
  2. 서버에서 plugins/dx-daily-post-limit/ 폴더 삭제
  3. DB 테이블 삭제 (선택):
sql
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을 실행하세요.

sql
-- 30일 이전 데이터 삭제
DELETE FROM `{prefix}daily_post_count`
WHERE write_date < DATE_SUB(CURDATE(), INTERVAL 30 DAY);

https://dxcmsboard.com

관리자 아이디 : admin / 비밀번호 : 12341234

첨부파일 1개 회원전용 100P

댓글0

로그인 후 댓글을 작성할 수 있습니다.
Plugin 15
41
전체 회원
1,272
전체 게시글
2,281
전체 댓글
5
오늘 방문
50,788
전체 방문
2
현재 접속
인기글 7일 이내
최신글
최신댓글
내 플레이리스트
플레이리스트가 비어있습니다
스튜디오 게시판에서
플레이리스트에 담기 버튼을
눌러보세요
목록
목록