BOARD

팁·활용

그누보드 댓글 삭제 시 데이터 완전 삭제 대신 '삭제된 댓글입니다' 흔적 남기는 방법

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 2회 작성일 26-10-27 15:11

본문

그누보드 댓글 삭제 시 데이터 완전 삭제 대신 '삭제된 댓글입니다' 흔적 남기는 방법

그누보드 운영자 및 개발자가 일반 사용자의 댓글 삭제 시 DB에서 완전히 지우는 대신 안내 문구와 삭제 일시를 기록하고, 관리자는 즉시 삭제를 유지하도록 기능을 수정하는 방법을 안내합니다.

그누보드 댓글 삭제 시 흔적 남기기 설정 방법

그누보드에서 일반 사용자가 댓글을 삭제할 때 데이터베이스에서 완전히 지우지 않고 "삭제된 댓글입니다" 문구와 일시를 남기려면 bbs/delete_comment.php 파일을 수정해야 한다. 관리자가 삭제할 때와 일반 사용자가 삭제할 때의 로직을 구분하여 처리할 수 있다.

수정 파일 및 위치

  • 수정 파일: bbs/delete_comment.php

※ 수정 전 반드시 bbs/delete_comment.php 파일을 백업하십시오.

코드 수정 방법

bbs/delete_comment.php 파일에서 관리자 여부를 확인하는 조건문(if ($is_admin))을 기준으로 코드를 분기한다. 관리자가 삭제할 경우에는 기존과 같이 완전 삭제 처리를 유지하고, 관리자가 아닐 경우에는 내용만 수정하는 쿼리로 변경한다.

if ($is_admin) {
 // 코멘트 삭제
 sql_query(" delete from {$write_table} where wr_id = '{$comment_id}' ");
 // 코멘트가 삭제되므로 해당 게시물에 대한 최근 시간을 다시 얻는다.
 $sql = " select max(wr_datetime) as wr_last from {$write_table} where wr_parent = '{$write['wr_parent']}' ";
 $row = sql_fetch($sql);
 // 원글의 코멘트 숫자를 감소
 sql_query(" update {$write_table} set wr_comment = wr_comment - 1, wr_last = '{$row['wr_last']}' where wr_id = '{$write['wr_parent']}' ");
 // 코멘트 숫자 감소
 sql_query(" update {$g5['board_table']} set bo_count_comment = bo_count_comment - 1 where bo_table = '{$bo_table}' ");
 // 새글 삭제
 sql_query(" delete from {$g5['board_new_table']} where bo_table = '{$bo_table}' and wr_id = '{$comment_id}' ");
} else {
 // 관리자가 아니면 코멘트 내용만 수정
 sql_query(" update {$write_table} set wr_content = '삭제된 댓글입니다. (삭제일시: ".G5_TIME_YMDHIS.")' where wr_id = '{$comment_id}' ");
}

주의 사항

  • 댓글 내용 내에 HTML 태그나 글자 색상 지정을 적용하더라도, 원본 출력 기준에 따라 댓글 출력부에서 태그가 정상 작동하지 않을 수 있으니 적용 시 출력 제한 문제를 고려해야 한다.

관리자와 일반 사용자 삭제 처리 분기 방법

그누보드에서 댓글 삭제 시 관리자와 일반 사용자의 처리를 다르게 하려면 bbs/delete_comment.php 파일의 조건문을 활용합니다. 관리자는 게시글을 관리해야 하므로 기존과 같이 즉시 완전 삭제 처리를 유지하고, 일반 사용자가 삭제할 때만 코멘트 내용만 수정하는 쿼리가 실행되도록 분기합니다.

수정 위치 및 조건문 적용

bbs/delete_comment.php 파일에서 $is_admin 변수를 기준으로 다음과 같이 조건문을 구분합니다.

  • 관리자 권한 ($is_admin): 기존과 동일하게 데이터베이스에서 댓글을 완전히 삭제하고, 원글의 코멘트 수 및 새글 테이블을 갱신하는 로직을 수행합니다.
  • 일반 사용자 (else): 코멘트 데이터를 완전히 삭제하는 대신 wr_content 필드 값을 '삭제된 댓글입니다. (삭제일시:...)' 문구로 업데이트하는 SQL 쿼리를 실행합니다.
if ($is_admin) {
 // 코멘트 삭제
 sql_query(" delete from {$write_table} where wr_id = '{$comment_id}' ");
 // (중략: 원글 코멘트 수, 새글 테이블 갱신 등 기존 관리자 삭제 로직 유지)
} else {
 // 관리자가 아니면 코멘트 내용만 수정
 sql_query(" update {$write_table} set wr_content = '삭제된 댓글입니다. (삭제일시: ".G5_TIME_YMDHIS.")' where wr_id = '{$comment_id}' ");
}

주의 사항

  • 댓글 내용 내에 HTML 태그나 글자 색상 지정을 적용하더라도, 원본 출력 방식에 따라 댓글 영역에서 태그가 정상 작동하지 않을 수 있으므로 적용 범위와 출력을 미리 확인해야 합니다.

삭제된 댓글 내용에 HTML 태그나 글자 색상 적용 시 주의사항

그누보드에서 일반 사용자가 댓글을 삭제할 때 완전 삭제 대신 특정 문구와 일시를 남기도록 bbs/delete_comment.php 파일을 수정한 후, 삭제된 댓글 문구에 HTML 태그(예: 글자 색상을 지정하는 <font color="#0000ff"> 등)를 적용하려 할 수 있습니다.

그러나 댓글 내용 내에 HTML 태그나 색상 지정을 하더라도, 원본 출력 기준의 댓글 영역에서는 해당 태그가 정상적으로 작동하지 않고 그대로 노출되거나 제한될 수 있습니다. 따라서 삭제된 댓글과 일반 댓글을 시각적으로 확실히 구별하려면 단순히 데이터 쿼리 내에 HTML 태그를 삽입하는 방식 외에 출력부의 처리 방식을 함께 검토해야 합니다.

그누보드 댓글 삭제 흔적 남기기 설정

  • 내 상황: 그누보드 5 환경에서 일반 사용자가 댓글을 삭제할 때 완전 삭제 대신 "삭제된 댓글입니다" 문구와 일시를 남기려 함
  • 선택 기준: 관리자 권한 여부에 따라 로직 분기 (bbs/delete_comment.php 파일 수정)
  • 다음 행동: 관리자 삭제 시 기존 완전 삭제 유지, 일반 사용자 삭제 시 내용 변경(update) 쿼리 적용

실전 FAQ

Q. 관리자가 삭제할 때와 일반 사용자가 삭제할 때의 처리를 어떻게 다르게 하나요?

  • 실행 및 예외: bbs/delete_comment.php 파일에서 $is_admin 변수를 확인하는 조건문을 활용합니다. 관리자($is_admin 참)인 경우 기존과 동일하게 데이터베이스에서 완전히 삭제하고 원글의 코멘트 수 및 새글 테이블을 갱신합니다. 관리자가 아닌 일반 사용자의 경우 else 블록에서 delete 쿼리 대신 wr_content 필드 값을 '삭제된 댓글입니다. (삭제일시:...)'로 변경하는 update 쿼리를 실행하도록 처리합니다.

Q. 삭제된 댓글 내용에 HTML 태그나 글자 색상을 적용할 수 있나요?

  • 막히는 지점: 댓글 내용에 HTML 태그를 포함하여 쿼리를 작성해도, 그누보드 댓글 출력부의 보안 및 렌더링 정책에 따라 태그가 작동하지 않고 문자로 노출될 수 있습니다.
  • 대안: 데이터 쿼리 삽입 방식만으로는 시각적 구별이 어려울 수 있으므로, 댓글 출력 스킨(view_comment.skin.php)에서 삭제 여부 필드를 확인하여 별도의 CSS 클래스를 적용하는 방식을 검토해야 합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.