그누보드 게시판 관리자 대리 글 등록 기능 구현 방법
페이지 정보

본문
관리자 권한으로 특정 회원의 아이디를 지정하여 해당 회원이 직접 작성한 것처럼 게시글을 등록하는 커스텀 구현 방법을 확인하고, 필수 스킨 파일 수정 및 주의사항을 점검합니다.
그누보드 관리자 대리 글 등록 기능 구현 방법
그누보드에서 관리자가 특정 회원의 아이디를 지정하여 해당 회원이 작성한 것처럼 글을 등록하려면, 대상 게시판 스킨 폴더 내의 write.skin.php 파일과 write_update.skin.php 파일을 수정하거나 추가해야 합니다.
1. write.skin.php 파일 수정
관리자 로그인 상태일 때만 출력되는 회원 아이디 지정 입력란을 적당한 위치에 추가합니다. 여분필드 wr_1번을 사용합니다.
<?php if ($is_admin) {?>
<div class="write_div">
<label for="wr_1" class="sound_only">회원아이디 지정</label>
<input type="text" name="wr_1" value="<?php echo $wr_1?>" id="wr_1" class="frm_input" size="30" placeholder="회원아이디">
</div>
<?php }?>
2. write_update.skin.php 파일 추가
게시판 스킨 폴더 안에 write_update.skin.php 파일을 새로 생성하고, 입력된 회원 아이디를 조회하여 게시물 작성자 정보를 갱신하는 코드를 작성합니다.
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
if ($is_admin && $_POST['wr_1']) {
$mb = get_member($_POST['wr_1']);
$mb_id = $mb['mb_id'];
$wr_name = $mb['mb_nick'];
$wr_email = addslashes($mb['mb_email']);
$wr_ip = $mb['mb_ip'];
sql_query(" update $write_table set mb_id = '$mb_id', wr_name = '$wr_name', wr_email = '$wr_email', wr_ip = '$wr_ip' where wr_id = '$wr_id' ");
}
?>
- 동작 조건: 관리자 권한으로
wr_1필드에 회원 아이디를 입력하고 글을 작성할 때 동작합니다. - 참고사항: 입력한 아이디가 존재하지 않을 경우에 대한 예외 처리가 포함되어 있지 않으므로, 유효성 검증 로직 추가를 고려해야 합니다.
관리자 대리 글 등록 시 회원 아이디 미존재 예외 처리 방법
그누보드 관리자 대리 글 등록 기능 구현 시, 입력한 회원 아이디가 실제 데이터베이스에 존재하지 않는다면 잘못된 정보로 글이 등록되거나 데이터 무결성 오류가 발생할 수 있습니다. 자료에 따르면 기본 구현 코드에는 회원 아이디 미존재에 대한 예외 처리가 포함되어 있지 않습니다.
이를 방지하려면 write_update.skin.php 파일에서 get_member 함수로 회원 정보를 가져온 직후, 해당 아이디가 유효한지 확인하는 조건문을 추가해야 합니다. 아래와 같이 구현할 수 있습니다.
$mb = get_member($_POST['wr_1']);
if (empty($mb['mb_id'])) {
alert('존재하지 않는 회원 아이디입니다.');
}
이렇게 get_member 결과값에 회원 아이디가 존재하는지 확인하고, 존재하지 않을 경우 alert() 함수를 통해 관리자에게 경고를 전달하여 데이터 무결성을 보호할 수 있습니다.
그누보드 관리자 대리 글 등록 기능 구현 방법
그누보드 게시판에서 관리자가 로그인한 상태로 글을 작성할 때, 특정 회원의 아이디를 지정하여 해당 회원이 직접 작성한 것처럼 등록하려면 게시판 스킨 파일인 write.skin.php와 write_update.skin.php를 수정합니다.
1. write.skin.php 파일 수정
관리자 권한으로 로그인했을 때만 회원 아이디를 입력할 수 있는 입력란이 나타나도록 적당한 위치에 코드를 추가합니다. 여분필드 wr_1번을 활용해 지정 아이디를 입력받습니다.
<?php if ($is_admin) {?>
<div class="write_div">
<label for="wr_1" class="sound_only">회원아이디 지정</label>
<input type="text" name="wr_1" value="<?php echo $write['wr_1'];?>" id="wr_1" class="frm_input" size="30" placeholder="회원아이디">
</div>
<?php }
2. write_update.skin.php 파일 추가 및 수정
해당 게시판 스킨 폴더에 write_update.skin.php 파일을 새로 생성하고, 입력된 회원 아이디 정보를 조회하여 게시물 작성자 정보를 갱신하는 로직을 작성합니다.
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
if ($is_admin && $_POST['wr_1']) {
$mb = get_member($_POST['wr_1']);
$sql = " update {$write_table} set mb_id = '{$mb['mb_id']}', wr_name = '{$mb['mb_name']}', wr_email = '{$mb['mb_email']}', wr_password = '{$mb['wr_password']}' where wr_id = '{$wr_id}' ";
sql_query($sql);
}
?>
3. 주의사항 및 예외 처리
wr_1필드에 입력된 회원 아이디를 통해get_member함수로 회원 정보를 가져와 DB를 업데이트합니다.- 입력된 회원 아이디가 존재하지 않을 경우에 대한 예외 처리가 포함되어 있지 않으므로, 유효하지 않은 아이디 입력 시 데이터 무결성을 보호하려면
get_member결과값 존재 여부를 확인하는 조건문 추가를 검토해야 합니다. - 작성된 글은
wr_1에서 지정한 회원이 로그인해도 똑같이 수정 및 삭제가 가능합니다.
참고자료
기타 참고자료
- 이전글그누보드 최신글 스킨 링크 클릭 수 증가 로직 수정 방법 26.09.24
- 다음글그누보드 특정 게시판 본문 내용 필수 입력 제약 해제 방법 26.09.24
댓글목록
등록된 댓글이 없습니다.