BOARD

팁·활용

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

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 23회 작성일 26-09-24 01:53

본문

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

관리자 권한으로 특정 회원의 아이디를 지정하여 해당 회원이 직접 작성한 것처럼 게시글을 등록하는 커스텀 구현 방법을 확인하고, 필수 스킨 파일 수정 및 주의사항을 점검합니다.

그누보드 관리자 대리 글 등록 기능 구현 방법

그누보드에서 관리자가 특정 회원의 아이디를 지정하여 해당 회원이 작성한 것처럼 글을 등록하려면, 대상 게시판 스킨 폴더 내의 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에서 지정한 회원이 로그인해도 똑같이 수정 및 삭제가 가능합니다.

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.