그누보드4 글쓰기 에러 해결 방법
페이지 정보

본문
그누보드4 글쓰기 페이지에서 발생하는 '글쓰기에는 wr_id값을 사용하지 않습니다' 에러의 원인을 진단하고 수정하는 방법을 안내합니다.
그누보드4 글쓰기 에러 원인
그누보드4 환경에서 글쓰기 페이지 진입 또는 제출 시 '글쓰기에는 $wr_id값을 사용하지 않습니다.' 에러가 발생하는 대표적인 원인은 스킨 내 자바스크립트가 목록 버튼(btn_list)을 제어하는 과정에서 요소를 찾지 못하거나, 버전 간 코드 호환성 문제 등이 발생하기 때문입니다.
주요 원인
- 목록 버튼 제어 자바스크립트 오류: 구형 스킨을 그누보드 4.3 이후 버전에 적용할 때,
write.skin.php상단에서 관리자 권한 등으로 목록 버튼 자체를 숨기거나 출력하지 않도록 처리했음에도 불구하고, 자바스크립트 영역에서는document.getElementById('btn_list').disabled = true;코드가 그대로 남아 있어 존재하지 않는 요소를 제어하려 할 때 발생합니다. - 기타 복합적 원인:
fwrite_submit함수의 중복 사용, 폐기된 금지단어 체크 자바스크립트 코드 잔존, 구형 에디터 연동 코드 불일치,head.sub.php에서의 jQuery 라이브러리 누락 등이 원인이 될 수 있습니다.
자바스크립트 목록 버튼 제어 코드 에러 수정 방법
그누보드4(G4) 글쓰기 페이지에서 자바스크립트가 목록 버튼을 제어할 때 요소를 찾지 못해 '글쓰기에는 $wr_id값을 사용하지 않습니다.' 에러가 발생하는 경우, 스킨 파일의 자바스크립트 수정 코드를 적용하여 해결할 수 있습니다.
수정 대상 파일
- 위치:
skin/board/스킨명/write.skin.php
수정 절차
write.skin.php파일 내에서document.getElementById('btn_list').disabled = true;코드를 검색합니다.- 목록 버튼(
btn_list)을 관리자만 보이도록 제어하는 조건문과 맞추어, 해당 자바스크립트 코드에도 관리자 권한 조건문을 함께 감싸줍니다.
<?php if ($is_admin) {?>
if (document.getElementById('btn_list')) {
document.getElementById('btn_list').disabled = true;
}
<?php }?>
- 또는 요소를 직접 찾지 못해 발생하는 오류를 방지하기 위해 아래와 같이 요소 존재 여부를 확인하는 조건문 스크립트로 수정할 수도 있습니다.
if(document.getElementById('btn_list'))
document.getElementById('btn_list').disabled = true;
다음 행동
- 수정을 완료한 후 글쓰기 페이지를 새로고침하여 에러 문구가 사라지고 정상적으로 진입되는지 확인합니다.
권한별 목록 버튼 출력 및 접근 제한 방법
그누보드4 게시판에서 특정 회원 레벨 조건에 따라 글쓰기 화면의 목록 버튼을 제어하고 권한이 부족한 회원의 비정상 접근을 막으려면 스킨 파일을 수정합니다.
1. write.skin.php 파일 수정
그누보드4 설치 경로의 skin/board/basic/write.skin.php 파일에서 회원 레벨($member['mb_level'])과 게시판 목록 권한($board['bo_list_level'])을 비교하여 처리합니다.
- HTML 출력부 확인 및 수정
- 지정된 줄(예: 251줄 부근)의 목록 버튼 링크 코드를 아래와 같이 조건문으로 감쌉니다.
<?php if ($member['mb_level'] >= $board['bo_list_level']) {?> <a href="./board.php?bo_table=<?=$bo_table?>"><img id="btn_list" src="<?=$board_skin_path?>/img/btn_list.gif" border=0></a> <?php }?> - 자바스크립트 제어부 확인 및 수정
- 지정된 줄(예: 380줄 부근)의 자바스크립트 코드를 아래와 같이 수정합니다.
<?php if ($member['mb_level'] >= $board['bo_list_level']) {?> document.getElementById('btn_list').disabled = true; <?php }?>
2. write_update.skin.php 파일 수정
동일한 스킨 폴더 내의 write_update.skin.php 파일 상단에 접근 제한 코드를 추가하여 권한이 미달하는 회원이 직접 URL 등으로 접근하는 상황을 방지합니다.
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
if ($member['mb_level'] < $board['bo_list_level']) {
if($w!= 'u') {
alert("신청되었습니다.", "./write.php?bo_table=$bo_table");
}
}
?>
상황별 해결 가이드
그누보드4 글쓰기 과정에서 문제가 발생했을 때 내 상황에 따른 판단과 행동 요령입니다.
| 내 상황 | 우선할 판단 | 다음 행동 |
|---|---|---|
| 구형 스킨 사용 중 글쓰기 화면 진입/제출 시 에러 발생 | 자바스크립트 내 목록 버튼 제어 코드(btn_list) 오류 확인 | write.skin.php에서 document.getElementById('btn_list').disabled = true; 코드를 관리자 조건문(<?php if ($is_admin) {?>)으로 감싸거나 요소 존재 여부 확인 코드로 수정 |
| 구형 스킨 사용으로 인한 폐기된 금지단어 함수 충돌 | 더 이상 지원되지 않는 자바스크립트 금지어 체크 코드 판단 | write.skin.php 내 word_filter_check 관련 자바스크립트 블록 전체 삭제 |
| 에디터 연동 오류 또는 내용 미입력 경고 현상 발생 | 에디터 초기화 코드 누락 및 fwrite_submit 함수 중복 여부 확인 | if (!defined("_GNUBOARD_")) exit; 하단의 cheditor 초기화 코드 및 textarea 출력부 최신화 반영 |
실전 FAQ
Q. write.skin.php에서 자바스크립트 코드를 수정했는데도 에러가 계속 발생하는 이유는 무엇인가요?
- 예외 및 대안: 자바스크립트 버튼 제어 코드 외에도
fwrite_submit함수가 중복 선언되었거나, 구형 에디터 연동 방식이 충돌을 일으키고 있을 수 있습니다. 최신 버전의 기본 스킨 파일과 비교하여 불일치하는 코드를 대조해 보거나 브라우저 개발자 도구의 콘솔 창에서 정확한 자바스크립트 오류 위치를 확인해야 합니다.
Q. 목록 권한이 있는 회원인데도 글쓰기 페이지에서 목록 버튼이 아예 보이지 않습니다.
- 예외 및 대안: 스킨 파일 내에서 목록 버튼 출력부가 관리자 권한(
$is_admin) 또는 잘못된 레벨 조건문으로 엄격하게 감싸져 있을 수 있습니다.skin/board/스킨명/write.skin.php에서 회원 레벨($member['mb_level'])과 게시판 목록 권한($board['bo_list_level'])을 비교하는 조건문 범위가 올바르게 설정되어 있는지 점검해야 합니다.
참고자료
기타 참고자료
- 이전글[G4] cheditor4 이미지 삽입 시 엑스박스(경로 오류) 해결 방법 26.10.02
- 다음글그누보드 게시판 에디터 입력창 높이 조절 방법 26.10.02
댓글목록
등록된 댓글이 없습니다.