불량 게시물 모니터링은 회원들에게 맡기자. > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

불량 게시물 모니터링은 회원들에게 맡기자. 정보

불량 게시물 모니터링은 회원들에게 맡기자.

본문

예전에 그누보드 잠금 기능을 생각하고 만들었습니다.
개인이 운영하는 사이트에 일일이 등록되는 글마다 모니터링 한다는 것은 사실상 불가능 합니다.
왜냐하면 자야 하니까...
그리고 운영자라고 해서 올라오는 글을 마음데로 잘라낸다면 회원들의 반발도 만만치가 않을것입니다.
그래서 만들어 봤습니다.

1. 선행 작업
세개의 필드를 새로 만들어야 합니다.
물론 여분필드를 활용해도 됩니다만 관리상 새로 추가하시는게 정신 건강에 좋습니다.
bo_use_lock      # 사용여부 체크
bo_use_lock_key  # 잠금을 할 신고 카운트 수를 정함
wr_lock          # 신고 처리된 카운터의 갯수를 저장.

sql_query(" ALTER TABLE `{$g4['board_table']}` ADD `bo_use_lock` VARCHAR( 255 ) NOT NULL AFTER `bo_use_nogood` ", FALSE);
sql_query(" ALTER TABLE `{$g4['board_table']}` ADD `bo_use_lock_key` VARCHAR( 255 ) NOT NULL AFTER `bo_use_lock` ", FALSE);

$sql = " select bo_table from $g4[board_table] ";
$result = sql_query($sql);
while($row=sql_fetch_array($result))
{
    sql_query(" ALTER TABLE `{$g4[write_prefix]}{$row[bo_table]}` ADD `wr_lock` VARCHAR( 255 ) NOT NULL AFTER `wr_nogood` ", FALSE);
}

2. ./bbs/good.php
파일을 몽땅 올려드립니다.
혹시 수정을 하신 분이 계시면 비교해서 수정하세요.

<?
include_once("./_common.php");

@include_once("$board_skin_path/good.head.skin.php");

echo "<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'>";

if (!$is_member)
{
    $href = "./login.php?$qstr&url=".urlencode("./board.php?bo_table=$bo_table&wr_id=$wr_id");

    echo "<script language='JavaScript'>alert('회원만 가능합니다.'); top.location.href = '$href';</script>";
    exit;
}

if (!($bo_table && $wr_id))
    alert_close("값이 제대로 넘어오지 않았습니다.");

$ss_name = "ss_view_{$bo_table}_{$wr_id}";
if (!get_session($ss_name))
    alert_close("해당 게시물에서만 추천, 비추천 그리고 잠금을 하실 수 있습니다.");

$row = sql_fetch(" select count(*) as cnt from {$g4[write_prefix]}{$bo_table} ", FALSE);
if (!$row[cnt])
    alert_close("존재하는 게시판이 아닙니다.");

if ($good == "good" || $good == "nogood" || $good == "lock")
{
    if($write[mb_id] == $member[mb_id])
        alert_close("자신의 글에는 추천, 비추천 또는 잠금 설정을 하실 수 없습니다.");

    if (!$board[bo_use_good] && $good == "good")
        alert_close("이 게시판은 추천 기능을 사용하지 않습니다.");

    if (!$board[bo_use_nogood] && $good == "nogood")
        alert_close("이 게시판은 비추천 기능을 사용하지 않습니다.");

    if (!$board[bo_use_lock] && $good == "lock")
        alert_close("이 게시판은 잠금 기능을 사용하지 않습니다.");

    $sql = " select bg_flag from $g4[board_good_table]
              where bo_table = '$bo_table'
                and wr_id = '$wr_id'
                and mb_id = '$member[mb_id]'
                and bg_flag in ('good', 'nogood', 'lock') ";
    $row = sql_fetch($sql);
    if ($row[bg_flag])
    {
        if ($row[bg_flag] == "good")
            $status = "추천";
        else if ($row[bg_flag] == "nogood")
            $status = "비추천";
        else
            $status = "잠금";
           
        echo "<script language='JavaScript'>alert('이미 \'$status\' 하신 글 입니다.');</script>";
    }
    else
    {
        // 추천(찬성), 비추천(반대) 카운트 증가
        sql_query(" update {$g4[write_prefix]}{$bo_table} set wr_{$good} = wr_{$good} + 1 where wr_id = '$wr_id' ");
        // 내역 생성
        sql_query(" insert $g4[board_good_table] set bo_table = '$bo_table', wr_id = '$wr_id', mb_id = '$member[mb_id]', bg_flag = '$good', bg_datetime = '$g4[time_ymdhis]' ");

        if ($good == "good")
            $status = "추천";
        else  if ($good == "nogood")
            $status = "비추천";
        else
            $status = "잠금";

        echo "<script language='JavaScript'> alert('이 글을 \'$status\' 하셨습니다.');</script>";
    }
}

@include_once("$board_skin_path/good.tail.skin.php");
?>
<script language="JavaScript"> window.close(); </script>

3. ./bbs/view.php
아래 부분을 보시면 추가한 부분이 있습니다.
파일을 열어서 84라인 정도부터 보시면 되겠습니다.
추가된 부분을 수정해 주시면 됩니다.

$scrap_href = "";
$good_href = "";
$nogood_href = "";
$lock_href = "";
if ($member[mb_id]) {
    // 스크랩 링크
    $scrap_href = "./scrap_popin.php?bo_table=$bo_table&wr_id=$wr_id";

    // 추천 링크
    if ($board[bo_use_good])
        $good_href = "./good.php?bo_table=$bo_table&wr_id=$wr_id&good=good";

    // 비추천 링크
    if ($board[bo_use_nogood])
        $nogood_href = "./good.php?bo_table=$bo_table&wr_id=$wr_id&good=nogood";

    // 잠금 링크
    if ($board[bo_use_lock])
        $lock_href = "./good.php?bo_table=$bo_table&wr_id=$wr_id&good=lock";
}

4. ./adm/board_form.php
313라인 정도에 넣으면 되겠군요.
추천, 비추천 아래 부분이 적당한것 같습니다.
<tr class='ht'>
    <td><input type=checkbox name=chk_use_lock value=1></td>
    <td>잠금 사용</td>
    <td>
      <input type=checkbox name=bo_use_lock value='1' <?=$board[bo_use_lock]?'checked':'';?>>사용
      <input type=text name=bo_use_lock_key value='<?=$board[bo_use_lock_key]?>' size="5">개 이상 제한
    </td>
</tr>

5. ./adm/board_form_update.php
62라인 정도에 넣어주면 되겠죠.
                bo_use_lock         = '$bo_use_lock',
                bo_use_lock_key     = '$bo_use_lock_key',

6. ./skin/board/스킨명/view.skin.php
일단 열어서 다른 이름으로 저장을 하시는데 view.col.skin.php로 저장하세요.
그리고 다시 view.skin.php를 열어서 아래 코드를 덮어 씌워서 저장하시면 됩니다.

<?
if (!defined("_GNUBOARD_")) exit;

/*
불량글 등록시 관리자가 일일이 모니터링 하기 어려우므로 회원들이 스스로 게시판 모니터링 요원이 된다.
관리자가 게시판별로 설정한 일정한 수준의 카운터가 신고되면 글은 잠겨지고 원글 작정자 조차도 수정, 삭제를 못하도록 했으며 관리자만 접근이 허용이 된다.
원글 작정자까지 접근을 막은건 수정, 삭제로 인하여 증거 인멸을 할 경우 분쟁의 발생시 문제가 될 소지도 있슴.
그리고 별도로 이동시키거나 저장해두지 않고 해당 게시판에 그대로 두고 열람만 막기 때문에 편리한 면도 있슴.

보드 테이블에 두 개의 필드를 추가했으며 게시판에도 별도로 필드가 한 개 추가가 되었다.
bo_use_lock      # 사용여부 체크
bo_use_lock_key  # 잠금을 할 신고 카운트 수를 정함
wr_lock          # 신고 처리된 카운터의 갯수를 저장.
*/

if ($board[bo_use_lock] == 1)
{
  if (!$is_admin && $view[wr_lock] == $board[bo_use_lock_key])
  {
    alert ("이 글은 회원들이 읽기를 거부한 글입니다.\\n\\n따라서 누구든 열어볼 수가 없습니다.");
  } else {
    include_once("$board_skin_path/view.col.skin.php");
  }
} else {
  include_once("$board_skin_path/view.col.skin.php");
}
?>

7. ./skin/board/스킨명/view.col.skin.php
적당한 곳에 아래 코드를 추가.
<? if ($lock_href) { echo "<a href=\"$lock_href\" target=\"hiddenframe\"><font color=\"red\">불량글 신고</font></a> "; } ?>

8. ./skin/board/스킨명/write.skin.php & write.col.skin.php
역시 view.skin.php와 동일한 작업을 하시고 변수만 달리 바꿔서 수정해 주시면 됩니다.

그외 ./board.php등에도 추천, 비추천 관련 코드가 있는데 일단 기능은 작동하는지라 그대로 올려봅니다.
추천
4

댓글 6개

wr_id 값을 따서 URL로 직접 삭제를 할 경우 삭제가 되어버리는 문제가 있습니다.
따라서 다음 코드를 추가해 주세요.

delete.head.skin.php

<?
if (!defined("_GNUBOARD_")) exit;

if ($board[bo_use_lock] == 1)
{
  if (!$is_admin && $write[wr_lock] == $board[bo_use_lock_key])
  {
    alert ("이 글은 회원들이 읽기를 거부한 글입니다.\\n\\n따라서 수정, 삭제가 불가능 합니다.");
  }
}
?>
그누보드처럼... 간단하게 div를 none으로 해도 좋을거 같네요.
제가 좀 더 읽어서 테스트를 해본 후에 관리자님의 것과 합체를 해볼께요.
전체 122 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT