하루 글쓰기 제한 하는방법 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

하루 글쓰기 제한 하는방법 정보

하루 글쓰기 제한 하는방법

본문

하루동안 글쓰기 제한을 걸려고 합니다.

사이트 게시판 전체 하루 글쓰기 00개가 아닌
각 게시판마다 2~3개씩 글쓰기를 제한하려고 하는데요.
하루지나면 리셋되서 다시 게시판마다 2~3개글을 올릴수 있게요.
한 게시판에 막 퍼날르는거를 방지하려고 합니다.

그래서 이것저것 찾아봤는데 올라온글중에는 적용이 제대로 되는거 없는거 같데요.

그래서
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=12663

이거를 사용해 봤는데요. 게시판마다 원하는 갯수만큼 글쓰기 제한이 잘되는데
문제가 하루가 지나도 리셋이 않되네요. 한번 글올리고 다른사람이 그 게시판에 추가글을
올리지 않으면 영원히 기다려야하는 문제가...

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
if ($is_dhtml_editor) {
    include_once("$g4[path]/lib/cheditor.lib.php");
    echo "<script src='$g4[editor_path]/cheditor.js'></script>";
    echo cheditor1('wr_content', $content);
}

//다른 회원 글 작성전 2개까지 제한
if ($w == "") {
  $mb_id = $member['mb_id'];
  $mb_name = $member['mb_name'];
        $sql = " select wr_name, mb_id from {$g4[write_prefix]}{$bo_table} where wr_is_comment = '0' order by wr_id desc limit 0, 2 ";
        $result = sql_query($sql);
  $mb_id1 = mysql_result($result,0,"mb_id"); // 1번글 아이디
  $mb_id2 = mysql_result($result,1,"mb_id"); // 2번글 아이디
        if(($mb_id == $mb_id1) && ($mb_id == $mb_id2)) {
            alert("$mb_name($mb_id)님 다른분이 글 작성 전에는 연속으로 2개까지만 작성 제한 게시판입니다!!");
        }
} // 글작성 제한 끝
?>

위 소스는 이건데요. 하루지나면 리셋되게 가능한가요?

아님 다른 좋은 방법이 있으면 자세히 알려주세요.
생초짜라 조금 어려우면 이해를 못합니다.^^;
  • 복사

댓글 전체

웬만한거는 다 찾아서 봤습니다.^^ 적어주신 것도 적용해봤고요. 게시판 전체 갯수제한이였던거 같습니다. 그래서 하루사용해보고 되돌렸습니다.
글쓰기 이벤트를 하고있기때문에 한군데 게시판에 몰아서 달리는걸 방지하려고 합니다.
[write_update.head.skin.php]
===================================================================================
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

/**
 * 특정기간 글작성 개수를 제한한다.(현재시간 기준)
 */
if ( $w == "" && $member['mb_id'] )
{
    $_limit_day = 1; // 일수
    $_limit_mb_id = 3; // 등록할 수 있는 글 수

    $res = sql_fetch("SELECT COUNT(*) AS cnt FROM ".$write_table." WHERE mb_id = '".$member['mb_id']."' AND wr_datetime >= DATE_ADD(CURDATE(), INTERVAL -".$_limit_day." DAY)");
    if ( $res['cnt'] >= $_limit_mb_id )
    {
        alert("아이디(".$member['mb_id'].")는 ".$_limit_day."일동안 ".$_limit_mb_id."개의 글을 작성할 수 있습니다.");
    }
}


/**
 * 하루 글작성 개수를 제한한다.(오늘기준 00:00:00 ~ 23:59:59)
 */
if ( $w == "" && $member['mb_id'] )
{
    $_limit_mb_id = 3; // 하루에 등록할 수 있는 글 수

    $res = sql_fetch("SELECT COUNT(*) AS cnt FROM ".$write_table." WHERE mb_id = '".$member['mb_id']."' AND wr_datetime BETWEEN DATE_FORMAT(CURRENT_TIMESTAMP(), '%Y-%m-%d 00:00:00') AND DATE_FORMAT(CURRENT_TIMESTAMP(), '%Y-%m-%d 23:59:59')");
    if ( $res['cnt'] >= $_limit_mb_id )
    {
        alert("아이디(".$member['mb_id'].")는 하루에 ".$_limit_mb_id."개의 글을 작성할 수 있습니다.");
    }
}
?>

===================================================================================

스킨폴더로 업로드 하시거나
적당한거 골라서 write_update.php 파일 상단에 붙여 넣으시면 될거 같네요..

1. 현재시간을 기준으로 하루전을 체크
2. 오늘을 기준(00:00:00~23:59:59)를 체크

+ 로그인 + 글작성 시간 적용됨
+ 이건 간단한 방법, 많은 수의 레코드가 있는 상황에서 좀 더 나은 성능을 위해선 다른 방법을 적용해야 함
스킨 폴더 write.skin.php에 적용하니까 적용이 잘 되는데요. 하루지나봐야 리셋되는거는 확인되겠지만. 문제점이 있네요. 최고관리자도 제한에 걸리네요^^;;
위에 제가 적은거도 이게 걸리던데 이부분을 깜빡했습니다. 이부분 제어 가능할까요?
if ( $w == "" && $member['mb_id'] )
요거를 아래로 변경~
if ( $w == "" && $member['mb_id'] && !$is_admin )

====================================================================
또는.... 레벨로 제한할 경우
if ( $w == "" && $member['mb_id'] && $member['mb_level'] <= 2 )
이거는 회원레벨이 2보다 작다면이니까, 관리자는 9, 10 정도일테니.. 안걸리겠죠??
1, 2번 둘중하나를 적용하셔야 하는거 잊으시면 안되요~
둘다 나름대로 기능이 다르니까요...

1번은 테스트 아이디 생성하셔서 글 쭉 등록하시면 테스트 가능할 것 같은데요??
2번은 지금 3개 등록해 두고.. 이따가 00:00:00 되면 다시 3개 등록이 가능한지 확인해보면 알겠죠??
댓다구리님 스킨을 수정하는 것도 좋지만 저도 수정하다보니 너무 너저분하고 업데이트가 힘들어져서 나중에는 힘들더군요. 혹시 기능을 또 수정할 일이 없다면야 모르겠지만 이 곳에 그런 기능을 가진 좋은 게시판스킨 많으니 그런 것을 사용한번 해 보실 것을 추천합니다. 배추게시판스킨검색해서 설치해보세요. 무료에다 기능이 만만찮습니다. ^^ 고수님들이 잘 맹글어놨더라구요 ㅎㅎ
© SIRSOFT
현재 페이지 제일 처음으로