BOARD

팁·활용

그누보드 관리자 권한으로 게시글 작성자 정보 아이디 직접 변경하는 방법

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 0회 작성일 26-10-29 16:08

본문

그누보드 관리자 권한으로 게시글 작성자 정보 아이디 직접 변경하는 방법

그누보드 운영 중 회원을 대신해 작성된 게시글의 작성자 아이디나 이름을 관리자 화면에서 직접 변경하여 효율적으로 관리할 수 있습니다.

view.skin.php 파일에 관리자 아이디 변경 폼 추가하기

그누보드5 환경에서 관리자가 게시판 상세 보기 화면에서 특정 게시글의 작성자 아이디를 직접 변경할 수 있도록 하려면, 사용 중인 게시판 스킨 디렉토리 안의 view.skin.php 파일에 관리자 권한 조건문과 함께 아이디 입력 및 전송을 위한 폼 코드를 추가해야 합니다.

1. 추가할 코드

view.skin.php 파일의 적절한 위치에 아래의 코드를 삽입합니다.

<?php if($is_admin) {?>
<div class="tbl_frm01 tbl_wrap">
 <table>
 <tbody>
 <form name="update_id" action="<?php echo $board_skin_url;?>/update_id.php" method="post" style="padding:0; margin:0;">
 <input type="hidden" name="bo_table" value="<?php echo $g5['write_prefix']. $bo_table;?>">
 <input type="hidden" name="REQUEST_URI" value="<?php echo $_SERVER['REQUEST_URI'];?>">
 <input type="hidden" name="wr_id" value="<?php echo $wr_id;?>">
 <tr>
 <th scope="row">아이디 변경</th>
 <td><input type="text" name="mb_id" style="width:120px;" class="frm_input" value="<?php echo $view['mb_id'];?>"></td>
 <th style="text-align:center;"><div class="btn_list"><input type="submit" value=" 저장 " class="btn_list"></div></th>
 </tr>
 </form>
 </tbody>
 </table>
</div>
<?php }?>

2. 다음 행동 및 주의사항

  • 권한 확인: $is_admin 변수를 통해 최고관리자 또는 관리자 권한을 가진 사용자에게만 해당 입력 폼이 노출됩니다.
  • 연계 파일 생성: 위 폼의 action 경로인 update_id.php 파일과 공통 파일인 _common.php를 해당 스킨 폴더 내에 함께 생성해야 정상적으로 데이터가 처리됩니다.
  • 테마 구조 확인: 아미나, 배추빌더 등 사용 중인 커스텀 테마의 디렉토리 구조에 따라 _common.php 파일 내부의 상대 경로(../../../common.php 등) 수정이 필요할 수 있습니다.

update_id.php 파일의 회원 및 게시글 테이블 연동 갱신 로직

그누보드5 환경에서 스킨 폴더 내에 생성하는 update_id.php 파일은 관리자가 입력한 회원 아이디를 기반으로 회원 테이블(member_table)과 게시글 테이블(write_table)을 연동하여 작성자 정보를 갱신합니다. 구체적인 처리 로직의 흐름은 다음과 같습니다.

  1. 관리자 권한 확인 및 전처리 파일 포함
    • 파일 상단에서 _common.php를 포함하여 그누보드 환경을 로드하고, if($is_admin) 조건문으로 관리자 권한을 가진 사용자만 코드를 실행할 수 있도록 제한합니다.
  2. POST 데이터 수집 및 대상 테이블 지정
    • 폼 전송을 통해 전달받은 게시판 테이블 접두사와 테이블명($g5['write_prefix'].$_POST['bo_table']), 게시글 고유번호($wr_id), 그리고 변경할 회원 아이디($mb_id)를 변수에 담습니다.
  3. 회원 테이블 조회
    • $g5['member_table']에서 입력받은 $mb_id와 일치하는 회원 정보를 SQL 쿼리로 조회 (select * from... where mb_id='{$mb_id}') 한 뒤, sql_query와 sql_fetch_array 함수를 통해 결과 배열($row)을 가져옵니다.
  4. 게시판 설정에 따른 작성자 이름 확정
    • 대상 회원이 존재하는 경우(if ($row['mb_id'])), 게시판 설정 값($board['bo_use_name'])을 확인합니다. 실명 사용 설정('1')인 경우에는 회원의 이름($row['mb_name'])을 작성자 이름($wr_name)으로 지정하고, 그 외의 경우에는 닉네임($row['mb_nick'])을 작성자 이름으로 지정합니다.
  5. 게시글 테이블 업데이트 쿼리 실행
    • update 쿼리를 실행하여 해당 게시글(wr_id)의 작성자 아이디(mb_id), 작성자 이름(wr_name), 이메일(wr_email), 홈페이지(wr_homepage) 정보를 조회한 회원 정보($row)와 새로운 아이디 값으로 갱신합니다.
    • 업데이트가 완료된 후에는 자바스크립트를 통해 이전 요청 페이지($_SERVER['REQUEST_URI'])로 리다이렉트합니다.

update_id.php 파일 작성 시 문법 오류 해결 방법

그누보드 스킨 폴더 내에 update_id.php 파일을 생성하고 코드를 작성할 때 Parse error: syntax error, unexpected ';' 또는 unexpected T_STRING 같은 문법 오류가 발생하는 경우, 주로 코드 내부의 괄호나 문자열 따옴표 처리 실수 때문에 발생합니다.

확인 및 조치 위치

  • 대상 파일: 스킨 디렉토리 내 update_id.php 파일
  • 주요 확인 항목: include_once 문장의 구문과 따옴표/괄호 짝

구체적인 수정 방법

  1. 2라인 문법 오류 (unexpected ';' 관련)
    • 수정 전: include_once("./_common.php)"; (괄호 위치 오류)
    • 수정 후: include_once("./_common.php");
  2. 26라인 또는 기타 라인 문법 오류 (unexpected T_STRING 관련)
    • 수정 전: ); 또는 따옴표 마감 누락
    • 수정 후: 문자열 및 괄호 마감부인 "); 형태가 정확히 입력되었는지 확인

다음 행동

  • 위와 같이 코드를 수정한 뒤에도 에러가 발생한다면, update_id.php 파일 내용 중 스크립트 영역을 잠시 삭제하고 테스트하거나 echo 문을 사용하여 쿼리 및 _POST 값이 정상적으로 넘어오는지 확인합니다.

테마 구조에 따른 _common.php 상대 경로 수정 방법

그누보드5에서 커스텀 테마(예: 아미나, 배추빌더 등)를 사용할 때는 스킨 파일 내에서 그누보드 루트의 common.php 파일을 불러오기 위한 상대 경로를 현재 파일의 실제 위치에 맞게 수정해야 합니다.

위치 및 경로 설정

  • 기본 게시판 스킨 경로(그누보드5/skin/board/스킨/_common.php)일 때:
    include_once('../../../common.php');
  • 테마 내 스킨 경로(그누보드5/theme/테마/skin/board/스킨/_common.php)일 때:
    include_once('../../../../../common.php');

다음 행동 및 예외

  • 사용하는 테마와 폴더 깊이에 따라 상위 디렉토리로 이동하는 단계(../)가 달라지므로, 파일 로드 실패나 include 관련 오류가 발생할 경우 _common.php 파일 안의 상대 경로 깊이가 그누보드 루트 디렉토리와 정확히 일치하는지 확인해야 합니다.

그누보드4 관리자 권한 게시글 작성자 변경 방법

그누보드4 환경에서 관리자가 게시판 상세 보기 화면에서 특정 게시글의 작성자 정보를 직접 변경하려면 view.skin.php 파일에 폼을 추가하고 update_writer.php 파일을 생성하여 mysql_query 함수로 연동해야 합니다.

1. view.skin.php 파일 수정

게시판 스킨 디렉토리의 view.skin.php 파일 내 적절한 위치에 관리자 권한 조건과 함께 작성자 정보 변경 폼 코드를 추가합니다.

<?php 
// if (is_admin) { // 관리자면 누구나 
if (is_admin && $member['mb_id'] == "관리자아이디") { // 관리자중에서 특정회원만 
?> 
<form name="hp_writer_change" method="post" action="<?php echo $board_skin_path;?>/update_writer.php">
작성자 정보변경... 
<input type="hidden" name="bo_table" value="<?php echo $bo_table;?>">
<input type="hidden" name="wr_id" value="<?php echo $wr_id;?>">
아이디. <input type="text" style="width:100px;" name="cb_mb_id" value="<?php echo $view['mb_id'];?>">
이름. <input type="text" style="width:100px;" name="cb_wr_name" value="<?php echo $view['wr_name'];?>">
e-mail. <input type="text" style="width:100px;" name="cb_wr_email" value="<?php echo $view['wr_email'];?>">
<input type="submit" value="정보변경">
</form> 
<?php }?>

2. update_writer.php 파일 생성

스킨 디렉토리에 update_writer.php 파일을 생성하고 아래 내용을 작성하여 전달받은 POST 데이터로 g4_write_ 테이블의 작성자 정보를 업데이트합니다. 그누보드4 전용 코드로 mysql 확장 함수를 사용하므로 PHP 7 이상 환경에서는 별도의 DB 드라이버 호환성 확인이 필요합니다.

<?php 
$g4_path = "../../.."; 
include_once("{$g4_path}/common.php"); 
include_once "../../../dbconfig.php"; 
echo ('<meta http-equiv="content-type" content="text/html; charset=utf-8">'); 
if($is_admin) { 
 $dbconn = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die("데이터베이스 연결에 실패하였습니다."); 
 mysql_select_db($mysql_db, $dbconn); 
 $query = " update `g4_write_{$_POST['bo_table']}` set mb_id = '{$_POST['cb_mb_id']}', wr_name = '{$_POST['cb_wr_name']}', wr_email = '{$_POST['cb_wr_email']}', wr_email = '{$_POST['cb_wr_email']}' where wr_id = '{$_POST['wr_id']}' "; 
 $result = mysql_query($query); 
 if(!$result) die(mysql_error()); 
 mysql_close($dbconn); 
} 
?> 
<script> 
location.href="<?php echo $g4['path']."/bbs/board.php?bo_table={$_POST['bo_table']}&wr_id={$_POST['wr_id']}";?>"; 
</script>

상황별 판단 및 행동 가이드

  • 내 상황: 그누보드5 환경에서 관리자 권한으로 특정 게시글의 작성자 아이디와 정보를 직접 변경하고 싶다.
  • 선택 기준: 게시판 상세 보기 화면(view.skin.php)에 관리자 권한 조건문과 아이디 입력 폼을 추가하고, 스킨 폴더 내에 _common.php 및 update_id.php 파일을 생성하여 회원 테이블과 게시글 테이블을 연동·갱신한다.
  • 다음 행동: view.skin.php와 update_id.php 파일을 생성 및 수정하고, 사용 중인 테마의 디렉토리 구조에 맞춰 _common.php의 상대 경로를 설정한 뒤 정상 반영 여부를 확인한다.

실전 FAQ

  • Q. update_id.php 파일 생성 후 Parse error 문법 오류가 발생할 때는 어떻게 하나요?
    • 대안: 2라인의 include_once("./_common.php)"; 구문에서 괄호와 따옴표 위치 오류가 발생하기 쉽습니다. 해당 구문을 include_once("./_common.php"); 형태로 바로잡고, 26라인 등에서 문자열 마감부(");)가 정확한지 확인하십시오.
  • Q. 아미나나 배추빌더 같은 커스텀 테마를 사용할 때 _common.php 경로는 어떻게 수정하나요?
    • 예외: 기본 스킨 경로가 아닌 테마 내 스킨 경로(그누보드5/theme/테마/skin/board/스킨/)에 위치할 경우, 상위 폴더 깊이에 맞춰 include_once('../../../../../common.php');와 같이 상대 경로를 알맞게 조정해야 합니다.
  • Q. 그누보드4 환경에서 작성자 정보를 변경하려면 어떻게 해야 하나요?
    • 버전별 차이: 그누보드4는 mysql 확장 함수를 사용하므로, view.skin.php에 폼을 추가하고 update_writer.php에서 mysql_query를 통해 wr_id에 해당하는 회원의 아이디, 이름, 이메일을 갱신하도록 처리해야 합니다. PHP 7 이상 환경에서는 별도의 DB 드라이버 호환성 확인이 필요합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.