특정 게시글 또는 댓글 숨김처리하는 방법
본문
쉐도우밴을 하려면 어떻게 하면 좋을지 방향 좀 잡아주실 수 있을까요?
비속어를 계속 쓰거나 게시판 분위기를 망치는 회원의 게시글을 삭제하면 왜 삭제하냐고 반발이 생길 수도 있을까봐 쉐도우밴 기능을 넣으려고 합니다.
작성자와 관리자한테는 보이는데 다른 회원한테는 글의 흔적 조차 안 보이는 그런 기능을 만들고 싶습니다.
작성자는 자신의 글이나 댓글이 숨김처리 된 것을 모르게 하고 싶고요.
답변 5
가이드 입니다. 오류 있을 수 있고 디버깅은 본인이 하셔야 합니다.
당연히 D/B 가 엉키더라도 본인이 감수하셔야 합니다.
의뢰로 가시는 것을 추천합니다.
######### 아래를 참고하세요 #############
1. 먼저 회원 테이블(g5_member)에 쉐도우밴 상태를 저장할 컬럼을 추가합니다:
```sql
ALTER TABLE g5_member ADD COLUMN mb_shadowban TINYINT(1) NOT NULL DEFAULT 0;
```
2. 게시물/댓글 테이블에도 숨김 상태를 저장할 컬럼을 추가합니다:
```sql
ALTER TABLE g5_write_{게시판명} ADD COLUMN wr_hidden TINYINT(1) NOT NULL DEFAULT 0;
ALTER TABLE g5_board_new ADD COLUMN bn_hidden TINYINT(1) NOT NULL DEFAULT 0;
```
3. 관리자 페이지에 쉐도우밴 관리 기능을 추가합니다:
```php
// adm/shadowban.php
<?php
$sub_menu = "200100";
include_once('./_common.php');
auth_check($auth[$sub_menu], 'w');
if($_POST['act_button'] == '선택수정') {
foreach($_POST['chk'] as $mb_id) {
sql_query(" UPDATE {$g5['member_table']} SET mb_shadowban = '1' WHERE mb_id = '$mb_id' ");
}
}
?>
```
4. 게시물 출력 부분을 수정합니다 (예: bbs/board.php):
```php
// 게시물 목록을 가져오는 쿼리 수정
$sql = " SELECT * FROM {$write_table} WHERE wr_hidden = 0 OR mb_id = '{$member['mb_id']}' OR '{$is_admin}' = 'super' ORDER BY wr_num";
// 또는 view.php에서 조건 체크
if($view['wr_hidden'] && !$is_admin && $member['mb_id'] != $view['mb_id']) {
alert('존재하지 않는 게시물입니다.');
}
```
5. 댓글 출력 부분도 수정:
```php
// view.php 또는 관련 템플릿 파일
$sql = " SELECT * FROM {$write_table} WHERE wr_parent = '{$wr_id}' AND (wr_hidden = 0 OR mb_id = '{$member['mb_id']}' OR '{$is_admin}' = 'super') ORDER BY wr_comment, wr_comment_reply ";
```
6. 게시물/댓글 작성 시 자동 숨김 처리:
```php
// write_update.php 수정
$mb_shadowban = sql_fetch(" SELECT mb_shadowban FROM {$g5['member_table']} WHERE mb_id = '{$member['mb_id']}' ");
if($mb_shadowban['mb_shadowban']) {
$wr_hidden = 1;
} else {
$wr_hidden = 0;
}
$sql = " INSERT INTO {$write_table}
SET wr_hidden = '{$wr_hidden}',
...기존필드들... ";
```
7. 새글 테이블 처리:
```php
// new.php 수정
$sql = " SELECT * FROM {$g5['board_new_table']}
WHERE (bn_hidden = 0 OR mb_id = '{$member['mb_id']}' OR '{$is_admin}' = 'super')
ORDER BY bn_id DESC ";
```
8. RSS 피드에서도 숨김 처리:
```php
// rss.php 수정
$sql = " SELECT * FROM {$write_table}
WHERE wr_hidden = 0
ORDER BY wr_num, wr_reply ";
```
회원에게만 리스트가 보이는 폐쇄적 커뮤니티면 몰라도
sir처럼 리스트가 공개된 커뮤니티에선 불만글 여전히 올라올 듯 합니다.
손님 상태에서도 분명 자기글 잘 있는지 확인해볼 거라서...
질문 보다는 의뢰에 가까운 내용입니다.
아래 블라인드 관련 과거 자료가 있으니 참고해보시고
못하시겠으면 의뢰로 가시기 바랍니다.
https://sir.kr/g5_tip/2522?sfl=wr_subject&stx=%EB%B8%94%EB%9D%BC%EC%9D%B8%EB%93%9C
원하시는 부분은 우선 숨김처리 룰부터 만드셔야 할것 같습니다.
예로 비속어를 몇번 이상 쓴경우를 체크했다가 적용할지 관리자가 일일이 확인하고 체크 할건지
아니면 비추천이 얼마이상 쌓인다든지...
게시판 분위기를 망친다는 말이 애매해서요.
그렇게 룰을 정하고 나면 해당 룰에 걸릴경우
해당 회원이 쓴글은 숨김처리(특정 칼럼에 표시를 하거나) 해준다던지 해서 본인이 볼때만 출력이 된다던지
아니면 출력은 모두한테 보이지만 클릭시 경고를 한다던지 하면 되는데....
이 게시물이 비회원도 공개가 된다면 결국 자기가 쓴글이 미출력 또는 숨김처리가 된걸 알게 되겠죠...
우선 질문하시는 분이 정확한 룰이나 숨김처리 방식을 정해야 개발에 대한 힌트를 드릴 수 있습니다.
수정해야 할 부분들이 한 두가지가 아니라서 질답으로 해결하기는 힘드실거 같습니다. 필요하신 기능이라면 직접 개발하시거나 제작의뢰를 이용하셔야 할 거 같습니다.