

DXCMS 익명게시판 (anon 스킨) 설치 설명서
버전: v2.4.1 대상: DXCMS v8.1.0 (PHP 5.6 ~ 8.4) 형태: 게시판 스킨 (플러그인 아님 — 파일 복사만으로 동작)
1. 포함 파일 / 설치 경로
압축을 풀면 anon 폴더가 나옵니다. 아래 두 위치에 그대로 복사하면 됩니다.
1) 테마 — 화면(뷰) 파일
boards/skins/anon/
├── list.php 게시판 목록 (관리자 설정 모달 포함)
├── view.php 게시글 보기 + 댓글/답글 (익명 작성 포함)
├── write.php 글쓰기 / 수정 폼
├── _list_rows.php 목록 행 partial
├── _pass_check.php 비회원 수정/삭제 비밀번호 확인 폼
├── style.css
└── skin.json
2) 게시판 — 독립 핸들러
boards/skins/anon/
├── write/handler.php 글 등록 처리 (+ 소켓 토큰 검증)
├── edit/handler.php 글 수정 처리 (+ 비밀번호 확인)
├── delete/handler.php 글 삭제 처리 (+ 비밀번호 확인)
├── reply/handler.php 댓글/답글 등록 처리 (+ 소켓 토큰 검증)
└── bulk/handler.php 관리자 설정 저장 처리 (comment_level)
boards/skins/anon/폴더가 없으면 새로 만들어서 복사하세요. 코어 파일은 어떤 것도 수정하지 않습니다.
2. 게시판 생성 / 설정
관리자 → 게시판 관리 → 게시판 생성(또는 기존 게시판 수정)에서 아래와 같이 설정합니다.
| 항목 | 설정값 |
|---|---|
| 게시판 타입 | 일반형 |
| 디자인 스킨 | anon |
| 읽기 권한 | 0: 전체 |
| 쓰기 권한 | 0: 전체 (비회원 글쓰기 허용) |
| 익명 쓰기 | 사용 (체크) |
설정 후 "게시판 생성/수정"을 누르면 끝입니다. 별도 DB 작업이나 플러그인 활성화는 필요 없습니다.
3. 댓글 권한(comment_level) 설정 — 관리자 UI에 없는 항목
DXCMS 관리자 화면에는 comment_level(댓글 작성 권한)을 바꾸는 입력칸이 없고, 기본값은 1(회원만) 입니다. 이 스킨은 게시판 목록 화면에 관리자 전용 설정 버튼을 추가했으므로, 거기서 바로 변경할 수 있습니다.
- anon 스킨이 적용된 게시판의 목록 페이지로 이동 (관리자로 로그인 상태)
- 우측 상단 ⚙️(설정) 아이콘 클릭
- "댓글 작성 권한" 중 선택
- 전체 (비회원 포함) ← 익명게시판이라면 이걸 선택
- 회원만
- 관리자만
- 저장 → 자동 새로고침
"전체"로 설정해야 비회원이 닉네임/비밀번호로 댓글·답글을 작성할 수 있습니다.
4. WebSocket 보안 토큰 연동 (선택)
이 스킨은 글쓰기/수정/삭제/댓글 작성 시 WebSocket 소멸성 토큰을 검증합니다. 소켓 서버가 설치되어 있지 않거나 연결에 실패해도 글쓰기 자체는 차단되지 않습니다 (완화 정책). 토큰 검증을 강제하려면 아래 두 가지가 필요합니다.
4-1. 전역 변수 DX_SOCKET
레이아웃(layout/main.php 등)에서 아래 형태의 전역 JS 변수가 출력되어야 합니다. (이미 소켓 플러그인이 설치되어 있다면 자동으로 출력됩니다.)
var DX_SOCKET = {
wsUrl: 'wss://your-domain.com:포트',
group: 'dxk_xxxxxxxx_xxxxxxxxxxxxxxxx'
};
4-2. 소켓 서버의 토큰 발급/저장
브라우저가 {type:"get_token"}을 보내면, 소켓 서버는 아래와 같이 응답하고 같은 값을 DxCache에도 저장해야 1회성 검증이 동작합니다.
javascript
// 소켓 서버 → 브라우저
{ "type": "token", "value": "랜덤16~128자(영문/숫자/_/-)" }
php
// 소켓 서버(PHP) 측 — 토큰 발급 시
DxCache::set('ws_token_' . $token, 1, 60); // 60초 정도 TTL 권장
게시글/댓글 저장 시 스킨이 ws_token_{token} 키를 1회 조회 후 즉시 삭제하여 검증합니다. DxCache에 키가 없으면(소켓 미연동) 토큰 형식만 확인하고 통과시킵니다.
5. 제공 기능 요약
| 기능 | 설명 |
|---|---|
| 비회원 글쓰기 | 닉네임 + 비밀번호(선택) 입력 후 작성 |
| 비회원 글 수정/삭제 | 작성 시 입력한 비밀번호로 본인 확인 후 처리 |
| 관리자 | 비밀번호 없이 모든 글 수정/삭제 가능 |
| 비회원 댓글/답글 | comment_level=0일 때 닉네임/비밀번호로 작성 |
| 세션 만료 모달 | 비회원에게는 표시되지 않음 (회원 전용 임시저장/세션구조 기능 자동 스킵) |
| 댓글 권한 설정 | 목록 화면 ⚙️ 버튼 → 모달에서 즉시 변경 |
6. 주의 사항
boards/skins/anon/reply/,boards/skins/anon/bulk/폴더는 이름만 보면 "답글글 작성"/"일괄처리" 기능처럼 보이지만, 이 스킨에서는 댓글 등록 / 설정 저장 전용으로 재사용됩니다. 일반형 게시판에서는 두 기능 모두 UI상 노출되지 않으므로 충돌이 없습니다.- 다른 게시판(스킨이 anon이 아닌 게시판)에는 전혀 영향을 주지 않습니다.
- 이미 게시글이 있는 기존 게시판의 스킨을 anon으로 바꿔도 기존 글은 그대로 표시됩니다(회원 작성 글은 비밀번호 확인 없이 작성자/관리자만 수정 가능, 비회원 작성 글은 비밀번호로 수정/삭제).
7. 문제 해결
| 증상 | 원인 / 조치 |
|---|---|
| 글쓰기 시 로그인 요구 | 게시판 "쓰기 권한"이 0(전체)인지 확인 |
| 비회원에게 "로그인 후 댓글 작성" 표시 | comment_level이 1 → 목록 ⚙️ 설정에서 "전체"로 변경 |
| 저장 시 "요청 실패" | CSRF 토큰 만료 — 새로고침 후 재시도. 지속되면 세션/쿠키 설정 확인 |
| 수정/삭제 시 비밀번호가 맞는데 실패 | 글 작성 시 비밀번호를 입력하지 않은 경우(비밀번호 없이 작성된 글은 본인 확인 불가, 관리자만 처리 가능) |