채택완료

최소 댓글수 제한 설정 어떻게 하나요?

2026-03-12 (목) 09:36:15 431
수고 하십니다.

댓글 입력시 최소 글자수를 설정. 0을 입력하면 검사하지 않음
​

최소 댓글수 제한 설정에서 최소 글자수를 3으로 해놔도 한 글자만 남겨도 댓글이 남겨 집니다.
최소 3~5자로 설정 하고 싶은데 다른 방법을 찾아야 할까요?

조언 좀 부탁드립니다.

감사합니다.
|

답변 2개 / 댓글 3개

채택된 답변
+20 포인트
eyekiss 님 말씀대로 해 보세요. 아마 맞을 겁니다.
그래도 안된다면 아래 방법으로 해보세요.

Hook 파일 생성
/extend/comment_filter.extend.php
Copy
<?php
if (!defined('_GNUBOARD_')) exit;
add_event('write_comment_update_before', function($board, $wr_id, $w){
    if ($w !== 'c') return;
    global $wr_content, $is_admin, $write_table;

    $min_len = 3; // 최소글자수
    $max_len = 300; // 최대 글자수
    $flood_time = 10; // 도배 제한 초

    $content = trim($wr_content);
    $content_check = preg_replace('/\s+/', '', strip_tags($content));
    $len = mb_strlen($content_check);

    /* 최소 글자수 */
    if(!$is_admin && $len < $min_len){
        alert("댓글은 최소 {$min_len}자 이상 입력해야 합니다.");
    }

    /* 최대 글자수 */
    if($len > $max_len){
        alert("댓글은 {$max_len}자 이하만 가능합니다.");
    }

    /* 동일 댓글 방지 */
    $sql = " select wr_id from {$write_table}
             where wr_parent = '{$wr_id}'
             and wr_content = '".sql_real_escape_string($content)."'
             limit 1 ";
    $row = sql_fetch($sql);

    if($row['wr_id']){
        alert("같은 댓글을 반복 등록할 수 없습니다.");
    }

    /* 도배 방지 */
    if(!$is_admin && isset($_SESSION['ss_comment_time'])){
        if(time() - $_SESSION['ss_comment_time'] < $flood_time){
            alert("댓글은 {$flood_time}초 후에 작성 가능합니다.");
        }
    }
    $_SESSION['ss_comment_time'] = time();
});

필요한 기능만 comment_filter.extend.php (변경가능) 로 저장해서
extend 폴더에 업로드 하세요.

답변에 대한 댓글 2개

2026-03-12 (목) 12:28:18
리빌더 사용중인데 적용이 안되네요. 감사합니다.
/bbs/write_comment_update.php
if ($w == 'c') // 댓글 입력
{
이 부분 바로 아래

아래소스를 적용해보세요
/* 댓글 필터 */
$min_len = 3; // 최소 글자수
$max_len = 300; // 최대 글자수
$flood_time = 10; // 도배 제한 초

$content = trim($wr_content);
$content_check = preg_replace('/\s+/', '', strip_tags($content));
$len = mb_strlen($content_check);

/* 최소 글자수 */
if(!$is_admin && $len < $min_len){
alert("댓글은 최소 {$min_len}자 이상 입력해야 합니다.");
}

/* 최대 글자수 */
if($len > $max_len){
alert("댓글은 {$max_len}자 이하만 가능합니다.");
}

/* 동일 댓글 방지 */
$sql = " select wr_id from $write_table
where wr_parent = '$wr_id'
and wr_content = '".sql_real_escape_string($content)."'
limit 1 ";
$row = sql_fetch($sql);

if($row['wr_id']){
alert("같은 댓글을 반복 등록할 수 없습니다.");
}

/* 도배 방지 */
if(!$is_admin && isset($_SESSION['ss_comment_time'])){
if(time() - $_SESSION['ss_comment_time'] < $flood_time){
alert("댓글은 {$flood_time}초 후에 작성 가능합니다.");
}
}
$_SESSION['ss_comment_time'] = time();

아마 관리자 로그인 되어 있어서 작성이 되는 걸 겁니다.

로그아웃 하시면 정상적으로 체크 합니다.

답변에 대한 댓글 1개

2026-03-12 (목) 11:38:08
커뮤니티 사이트에서 일반 회원들이 작성을 하고 있어서요.
답변 감사합니다.

답변을 작성하려면 로그인이 필요합니다.