그누보드 게시판 및 최신글 목록 비밀글 제목 숨김 처리 방법
페이지 정보

본문
그누보드 운영자·개발자가 게시판 목록과 최신글 목록에서 비밀글의 원래 제목 대신 '비밀글입니다.' 문구가 출력되도록 코드를 수정하고, 관리자 및 작성자 본인은 정상적으로 제목을 확인할 수 있게 돕습니다.
그누보드 게시판 및 최신글 목록 비밀글 제목 숨김 처리 방법
그누보드 기본 스킨은 비밀글 여부와 상관없이 wr_subject를 그대로 출력하므로, 관리자와 작성자 본인을 제외한 사용자가 볼 때 제목을 '비밀글입니다.'로 숨기려면 게시판 스킨, 최신글 스킨, 최신글 함수 라이브러리 코드를 수정해야 합니다.
1. 게시판 스킨 수정
- 수정 파일:
list.skin.php
게시글 목록을 출력하는 반복문(for ($i=0; $i<count($list); $i++)) 바로 아래에 아래의 코드를 추가합니다.
if (!$is_admin && strstr($list[$i]['wr_option'], 'secret')) {
if ($list[$i]['mb_id']!= $member['mb_id'] ||!$list[$i]['mb_id']) {
$list[$i]['subject'] = "비밀글입니다.";
}
}
- 조건 설명:
!$is_admin: 관리자가 아니거나strstr($list[$i]['wr_option'], 'secret'): 비밀글이거나$list[$i]['mb_id']!= $member['mb_id']: 글 작성자가 아닐 때 제목을 변경합니다.
2. 최신글 스킨 수정
- 수정 파일:
latest.skin.php
게시판 스킨 수정 내용과 동일하게 최신글 목록을 출력하는 루프 내부에 조건문을 추가합니다.
3. 최신글 함수 파일 수정
- 수정 파일:
lib/latest.lib.php
파일 상단의 global 선언 부분에 $is_admin과 $member를 추가합니다.
global $g5, $is_admin, $member;
4. 비밀번호 입력창 타이틀 수정 (선택)
제목을 클릭했을 때 이동하는 비밀번호 입력창에서 원래 제목이 노출되는 것을 방지하려면 회원 스킨 파일을 수정할 수 있습니다.
- 수정 파일:
skin/member/basic/password.skin.php - 상단 내용 중
else $g5['title'] = $g5['title'];부분을 아래와 같이 변경합니다.
else $g5['title'] = "비밀글입니다.";
다음 행동 및 확인 방법
- 일반 회원 또는 비회원 계정으로 접속하여 타인이 작성한 비밀글 제목이 목록과 최신글 영역에서 '비밀글입니다.'로 표시되는지 확인합니다.
- 관리자 계정 및 작성자 본인 계정으로는 원본 제목이 정상적으로 노출되는지 확인합니다.
최신글 목록 및 함수 파일 수정 방법
최신글 영역에서도 비밀글 제목이 그대로 노출되는 문제를 해결하려면 최신글 스킨 파일과 최신글 함수 파일을 함께 수정해야 합니다.
1. 최신글 스킨 수정
- 수정 파일:
latest.skin.php - 적용 내용: 게시판 목록 스킨(
list.skin.php) 수정 내용과 동일한 로직을 적용하여, 관리자가 아니고 비밀글이면서 본인 글이 아닐 경우 제목을 "비밀글입니다."로 변경합니다.
2. 최신글 함수 파일 수정
- 수정 파일:
lib/latest.lib.php - 적용 내용: 파일 상단의
global선언 부분에$is_admin,$member변수를 추가하여 최신글 함수 내부에서 관리자 권한 및 회원 정보를 참조할 수 있도록 합니다.
global $g5, $is_admin, $member;
그누보드 게시판 및 최신글 목록 비밀글 제목 숨김 처리 방법
그누보드5 환경에서 게시판 목록이나 최신글 목록에 비밀글의 원래 제목이 그대로 노출되는 것을 방지하기 위해, 관리자와 본인 작성 글을 제외한 나머지 상황에서 제목을 "비밀글입니다."로 일괄 변경하는 방법입니다.
1. 게시판 스킨 수정
수정할 파일: list.skin.php
게시글 목록을 출력하는 반복문 루프 직후에 아래 코드를 추가합니다.
for ($i=0; $i<count($list); $i++) {
if (!$is_admin && strstr($list[$i]['wr_option'], 'secret')) {
if ($list[$i]['mb_id']!= $member['mb_id'] ||!$list[$i]['mb_id']) {
$list[$i]['subject'] = "비밀글입니다.";
}
}
!$is_admin: 관리자가 아닐 때strstr($list[$i]['wr_option'], 'secret'): 비밀글 옵션이 설정되어 있을 때$list[$i]['mb_id']!= $member['mb_id']: 글 작성자가 아닐 때 (비회원 작성 글 포함)
2. 최신글 스킨 수정
수정할 파일: latest.skin.php
게시판 스킨 수정 내용과 동일한 조건문 로직을 최신글 출력 반복문 내에 적용합니다.
3. 최신글 함수 파일 수정
수정할 파일: lib/latest.lib.php
최신글 함수 파일 상단의 global 선언부에 $is_admin, $member 변수를 추가합니다. (Q2 참조)
4. 특정 게시판에만 적용하기
특정 게시판에서만 비밀글 제목을 숨기려면 조건문에 bo_table 체크를 추가합니다.
if ($bo_table == '원하는게시판아이디' &&!$is_admin && strstr($list[$i]['wr_option'], 'secret')) {
if ($list[$i]['mb_id']!= $member['mb_id'] ||!$list[$i]['mb_id']) {
$list[$i]['subject'] = "비밀글입니다.";
}
}
4. 비밀번호 입력창 타이틀 수정 (선택)
비밀글 제목을 클릭하여 이동하는 비밀번호 입력창에서 원래 제목이 노출되는 것을 방지하려면 회원 스킨 파일(skin/member/basic/password.skin.php) 상단 내용 중 아래 부분을 수정합니다.
기존 코드:
else $g5['title'] = $g5['title'];
변경 코드:
else $g5['title'] = "비밀글입니다.";
비밀번호 입력창 타이틀에서 비밀글 원래 제목 숨기기
비밀글 제목을 클릭했을 때 이동하는 비밀번호 입력창에서 원래 제목이 브라우저 타이틀에 노출되는 현상을 차단하려면 skin/member/basic/password.skin.php 파일을 수정합니다.
수정 방법
skin/member/basic/password.skin.php파일을 엽니다.- 파일 상단 내용 중 아래 코드를 찾습니다.
else $g5['title'] = $g5['title']; - 해당 코드를 아래와 같이 변경합니다.
else $g5['title'] = "비밀글입니다.";
이 설정을 적용하면 비밀번호 입력 화면으로 진입할 때 원래 제목 대신 "비밀글입니다." 문구가 출력되어 타이틀을 통한 제목 유출을 방지할 수 있습니다.
그누보드 비밀글 제목 숨김 적용 흐름
| 내 상황 | 우선할 판단 | 다음 행동 |
|---|---|---|
| 게시판 목록에서 타인이 비밀글 제목을 유추할 수 있어 숨기고 싶음 | 일반 회원과 비회원에게만 '비밀글입니다.'로 치환하고 관리자와 본인에게는 원본 노출 | list.skin.php의 반복문 직후에 !$is_admin 및 비밀글 여부 확인 조건문 추가 |
| 메인 등 최신글 영역에서도 비밀글 제목이 그대로 노출됨 | 최신글 스킨과 함수 파일에서 권한 변수를 함께 참조하도록 설정 | latest.skin.php 수정 및 lib/latest.lib.php에 $is_admin, $member 전역 변수 추가 |
| 비밀글 제목 클릭 시 이동하는 비밀번호 입력창 타이틀에 원래 제목이 나옴 | 브라우저 탭 타이틀 유출 방지 | skin/member/basic/password.skin.php 상단의 $g5['title'] 값 변경 |
실전 FAQ
Q. 특정 게시판에만 선별적으로 비밀글 제목 숨김 처리를 적용하려면 어떻게 하나요?
- A. 본문에 제시된 일괄 적용 방식 외에 특정 게시판(
bo_table)에서만 작동하게 하려면 스킨 파일 내 조건문에$board['bo_table'] == '원하는게시판아이디'체크 로직을 감싸서 처리할 수 있습니다.
Q. 최신글 스킨에서 루프 변수가 $i가 아니라 다른 문자일 때는 어떻게 수정해야 하나요?
- A. 일부 커스텀 최신글 스킨이나 빌더 환경에서는 반복문 변수로
$j등을 사용할 수 있습니다. 이 경우 조건문 내부의 배열 키 값($list[$i]등)도 해당 루프 변수에 맞게 일치시켜야 오류 없이 동작합니다.
함께 보면 좋은 글
참고자료
기타 참고자료
- 이전글그누보드 게시판 목록 상단 텍스트 분류를 이미지 버튼으로 변경하기 26.10.04
- 다음글그누보드 글쓰기 폼 특정 필드 숫자만 입력 제한 스크립트 적용 방법 26.10.04
댓글목록
등록된 댓글이 없습니다.