글(원글,답글,코멘트) 쓴 갯수로 사용 제한 - 회원전용(수정4) > 그누4 팁자료실

그누4 팁자료실

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

글(원글,답글,코멘트) 쓴 갯수로 사용 제한 - 회원전용(수정4) 정보

글(원글,답글,코멘트) 쓴 갯수로 사용 제한 - 회원전용(수정4)

본문

헐랭이님의 팁을 활용하여 좀 더 확장해서 함수로 정리해 보았습니다.
좋은 팁 감사합니다. 헐랭이님.. 참고링크는 아래와 같습니다.
http://sir.co.kr/bbs/tb.php/g4_tiptech/2101
http://sir.co.kr/bbs/tb.php/g4_tiptech/2081


※ 글(원글,답글,코멘트) 쓴 갯수로 사용 제한하기 - 회원전용


자신이 현재 게시판에서 원글, 답글, 코멘트 등을 쓴 갯수를 이용해서 사용에 제한을
둘 수 있는 기능입니다. 또는 원글 안에서 답글과 코멘트 쓴 갯수로 좁혀서 제한을
둘 수도 있겠습니다.

수정 : 2005.1.15
꼭 있어야 할 게시판지정하는 부분이 빠졌네요;;;. 수정되었습니다. 죄송합니다.
수정 : 2005.1.17
-특정게시물일때만 작동하도록 되어 있던 부분이 수정되었습니다.
수정 : 2005.2.3
-사용가능시간 추가요.
수정 : 2006.3.21
-기타 에러수정요
★수정 : 2006.4.15
-죄송합니다. 문제가 있었네요. 에러수정요.

===================================================================
설명요..


write_alert(1,'down','a','humor'); 를 view.skin.php 상단에 삽입하셨다고 치면,
humor 게시판안에서 자신의 원글,답글,코멘트 모두 포함해서 1개 보다 작으면
글보기 못합니다.
 
write_alert(1,'up','a','humor'); 를 write.skin.php 상단에 삽입하셨다고 치면,
humor 게시판안에서 자신의 원글,답글,코멘트 모두 포함해서 1개 이상이면
글쓰기 못한다는 거죠.


write_alert(1,'down','humor'); 를 view.skin.php 상단에 삽입하셨다고 치면,
humor 게시판안에서 자신의 원글이 전체 1개 보다 작으면 글보기 못합니다.
 
write_alert(1,'up','humor'); 를 write.skin.php 상단에 삽입하셨다고 치면,
humor 게시판안에서 자신의 원글이 1개 이상이면 글쓰기 못한다는 거죠.


write_alert(1,'up','r','humor'); 를 write.skin.php 상단에 삽입하셨다고 치면,
humor 게시판안에서 자신의 답글 갯수가 전체 1개 이상이면 더 못쓴다는거죠.

write_alert(1,'up','c','humor'); 를 write_comment_update.php 상단에 삽입하셨다고 치면,
humor 게시판안에서 자신의 코멘트 갯수가 전체 1개 이상이면 더 못쓴다는거죠.


write_alert(1,'up','r','humor',123); 를 write.skin.php 상단에 삽입하셨다고 치면,
humor게시판 wr_id=123에 해당하는 글안에서 자신의 답글이 갯수가 1개 이상이면 답글을 더
못쓴다는 겁니다.

write_alert(1,'up','c','humor',123); 를 write_comment_update.php 상단에 삽입했다면,
humor게시판 wr_id=123에 해당하는 글안에서 자신의 코멘트 갯수가 1개 이상이면 코멘트를
더 못쓴다는 겁니다.

write_alert(1,'up','c','humor',123,24); 를 write_comment_update.php 상단에 삽입했다면,
humor게시판 wr_id=123에 해당하는 글안에서 24시간내에 작성한 자신의 코멘트 갯수가 1개 이상이면
코멘트를 더 못쓴다는 겁니다.

반복이라서 이하 생략요...;;
===================================================================

◎ 위에서 보시다시피 필요한 부분이 있고, 불필요한 부분도 있으실 겁니다.
적절하게 사용하시면 되리라 생각합니다. 주석을 좀 심하게 달아 놓았으니 참조하세요.
제한하는 숫자는 적절히 바꾸시면 되겠습니다.



1.
▶extend 방에 xxx.php라는 화일이 있다고 치고요. 그 문서 안에 아래 소스를 적절히 삽입하시면
됩니다. 아래는 본 내용에 해당하는 소스만 있다는 가정하에 전체소스라고 보시면 됩니다.
이미 사용하시는 자신의 내용들이 있는 곳에 넣으신다면 소스 삽입 부분만 옮기시면 됩니다.


<?
if (!defined("_GNUBOARD_")) exit; // 개별페이지 접근불가

//== 소스 삽입 시작 ==

//글(원글,답글,코멘트) 쓴 갯수로 사용 제한하기 - 회원전용 (by 헐랭이,아쵸오)
//$type : a-전체글, r-답글, c-코멘트, 없으면 원글
//$itime : 사용가능시간(단위:시간)
//$except : 제외게시판 구분자(|)
//a-전체글
//____ 아래 예제는 humor이라는 게시판내에서 적용된다는 가정입니다.
//예) write_alert(1,'down','a','humor'); //본인의 게시물 갯수가 1개보다 작으면 에러출력 (view.skin.php 등..)
//예) write_alert(1,'up','a','humor'); //본인의 게시물 갯수가 1개이상이면 에러출력 (write.skin.php 등..)
//r-답글
//예) write_alert(1,'down','r','humor'); //본인의 답글 갯수가 1개보다 작으면 에러출력 (view.skin.php 등..)
//예) write_alert(1,'up','r','humor'); //본인의 답글 갯수가 1개이상이면 에러출력 (write.skin.php 등..)
//c-코멘트
//예) write_alert(1,'down','c','humor'); //본인의 코멘트 갯수가 1개보다 작으면 에러출력 (view.skin.php 등..)
//예) write_alert(1,'up','c','humor'); //본인의 코멘트 갯수가 1개이상이면 에러출력 (write_comment_update.php 등..)
//원글
//예) write_alert(1,'down','','humor'); //본인의 원글 갯수가 1개보다 작으면 에러출력 (view.skin.php 등..)
//예) write_alert(1,'up','','humor'); //본인의 원글 갯수가 1개이상이면 에러출력 (write.skin.php 등..)
//$wr_id값에 해당하는 원글내에서로 조건축소
//예) write_alert(1,'up','r','humor',123); //wr_id=123의 글안에서 답글 갯수가 1개이상이면 에러출력 (write.skin.php 등..)
//예) write_alert(1,'up','c','humor',123); //wr_id=123의 글안에서 코멘트 갯수가 1개이상이면 에러출력 (write_comment_update.php 등..)
//예) write_alert(1,'up','c','humor',123,24); //24시간 내에 작성한 코멘트 1개 이상이면 에러출력

function write_alert($whn='',$ud='',$type='',$table='',$wid='',$itime='',$except='') {

global $g4;
global $member;
global $wr_id;
global $is_admin;

    if (!$wr_id) $wr_id = $wid;
    $except = 0;
    if ($except) {
      $except_arr = explode("|",chop($except)); //제외게시판
        if (in_array($table,$except_arr)) $except = 1;
    }

    $bo_table_name ="".$g4[write_prefix]."".$table."";   
    if($member[mb_id] && !$is_admin && $whn && $ud && $table && (!$wid || $wid == $wr_id) && !$except)
    {
        if ($itime) {
            //사용가능 시간지정
            $udatatime = date("Y-m-d H:i:s", time() - (int)(60 * 60 * $itime));
            $ins_time = "and wr_datetime >= '$udatatime'"; //유효시간 조건
            $pment_time = "{$itime}시간 내에 ";
        }
        if ($type == "a") {
       
            $pment = "글 (답글,코멘트포함)";
            $ab_board =@mysql_fetch_array(mysql_query("select count(*) from $bo_table_name where mb_id ='$member[mb_id]' $ins_time"));
        } else if ($type == "r") {
         
          $pment = "답글";
          if ($wid) {
            $arr =@mysql_fetch_array(mysql_query("select wr_num from $bo_table_name where wr_id='$wid'"));
              $ins = "and wr_num = $arr[0]"; //답글의 어미 원글 안에서로 조건 축소
          }
            $ab_board =@mysql_fetch_array(mysql_query("select count(*) from $bo_table_name where wr_reply !='' $ins $ins_time and mb_id ='$member[mb_id]'"));       
       
        } else if ($type == "c")  {
           
            $pment = "코멘트";
            if ($wid) {$ins = "and wr_parent = $wid";} //코멘트의 원글 안에서로 조건 축소
            $ab_board =@mysql_fetch_array(mysql_query("select count(*) from $bo_table_name where wr_is_comment ='1' $ins $ins_time and wr_reply ='' and mb_id ='$member[mb_id]'"));       
       
        } else {
       
            $pment = "원글";
            $ab_board =@mysql_fetch_array(mysql_query("select count(*) from $bo_table_name where wr_is_comment ='0' and wr_reply ='' $ins_time and mb_id ='$member[mb_id]'"));       
       
        }

        $row = @sql_fetch_array(sql_query("select bo_subject from $g4[board_table] where bo_table = '$table'")); //게시판 이름 가져오기
        $rowmember =$ab_board[0]; //글갯수
        if($ud == "down" && $rowmember < $whn) { //$whn 보다 작으면 불합격 이전페이지로 이동
            //alert("[{$row[bo_subject]} {$wid}] 게시판에 {$pment_time}{$whn}개 이상 $pment 작성을 하셔야만 이용하실 수 있습니다. \\n\\n (현재 {$member[mb_nick]}님의 $pment : {$rowmember}개)");
            alert("[{$row[bo_subject]}] 게시판에 {$pment_time}{$whn}개 이상 $pment 작성을 하셔야만 이용하실 수 있습니다. \\n\\n (현재 {$member[mb_nick]}님의 $pment : {$rowmember}개)", "./board.php?bo_table=$table");
        }
        if($ud == "up" && $rowmember >= $whn) { //$whn 이상이면 불합격 이전페이지로 이동
            alert("[{$row[bo_subject]} {$wid}] 게시판에 {$pment_time}{$whn}개 이상의 $pment 작성을 이미 하셨으므로 이용하실 수 없습니다. \\n\\n (현재 {$member[mb_nick]}님의 $pment : {$rowmember}개)");
        }
    }
    return;
}

//== 소스 삽입 끝 ==

?>

※ 잘못된 부분 있으면 지적해 주세요.
추천
2

댓글 9개

한단계 업그레이드를 하셨네요.수고하셨습니다.^^;
업그레이드하신 평션을 사용하기위해선 초보분들은 위의 설명으로는 사용에
어려움이 있을듯합니다. 평션이 자리잡을 파일이나 위치등을 g4 기본 배포용을
기준으로 좀더 상세히 설명해 주시면 초보분들에게 많은 도움이 될것 같습니다.
아..네.. 펑션이 자리 잡을 위치는


if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
다음 줄이나
include_once("./_common.php"); 와 같은 인쿠르드문... 다음 줄 쯤..
거의 최상단 쯤에 삽입하시면 되지 않을까 싶습니다.

전역변수로 $g4, $member, $bo_table를 쓴다는 점만 고려하시면 되겠습니다.


1.
예를 들면, view.skin.php 화일을 열고..

==============================
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
write_alert(1,'down','','humor'); //★글(원글,답글,코멘트) 쓴 갯수로 사용 제한하기 - 회원전용
?>
아래 내용...생략
==============================
위에 처럼 하시면 되겠습니다.
humor 게시판에서 (원)글 1개도 안썼다면 글보기 못하도록 에러뿌려주고 이전페이지로 이동시키겠지요.


2.
예를 들면, write_comment_update.php 화일을 열고..

==============================
<?
include_once("./_common.php");
include_once("$g4[path]/lib/trackback.lib.php");
write_alert(1,'up','c','humor',123); //★글(원글,답글,코멘트) 쓴 갯수로 사용 제한하기 - 회원전용


아래 내용...생략
==============================
위에 처럼 하시면 되겠습니다.
humor게시판의 wr_id=123 게시물에서 이미 코멘트 1개 쓰셨다면 더 이상 코멘트 못 쓰도록 에러뿌려주고 이전페이지로 이동시키겠지요.


3.
예를 들면, write.skin.php 화일을 열고..

==============================
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
write_alert(1,'up','r','humor',123); //★글(원글,답글,코멘트) 쓴 갯수로 사용 제한하기 - 회원전용


아래 내용...생략
==============================
위에 처럼 하시면 되겠습니다.
humor게시판의 wr_id=123 게시물에서 이미 답글 1개 쓰셨다면 더 이상 답글 못 쓰도록 에러뿌려주고 이전페이지로 이동시키겠지요.
4.06.11에서 적용한거라서.. 4.06.18에서는 확인 못했어요. 그리고, 현재시각으로 본 소스 내용 수정했습니다. 확인해 보니 문제들이 있었던거 같아요. 물론 4.06.18에서 확인한 사항은 아니구요. 바뀐걸로 함 해보시면 어떨까 싶네요.
전체 코멘트수를 제한할수는 없는지요?
예를 들어 해당게시글에 코멘트를 10개까지만 작성하게 허용했다면

11번째는 코멘트 작성폼이 안보이고..
코멘트가 10개로 마감되었다고 나오던지..
위처럼 경고창을 보여주면 될것같은데요....

가능한 소스좀 부탁해도 될런지요..
폼이 안보이게 하고 그러는거는 따로 만드셔야 하구요. 위에 내용을 가지고 한다면, 11번째 코멘트쓰기를 할때 경고창과 함께 취소되게 하는거죠.

write_alert(10,'up','c','humor',$wr_id); 를 write_comment_update.php 상단에 삽입했다면,
humor게시판의 각 글안에서 자신의 코멘트 갯수가 10개 넘어가면 코멘트를 더 못쓴다는 겁니다.

humor게시판 안의 어떤 게시물에 들어가서든지 코멘트를 10개 쓰셨다면, 11번째 코멘트를 쓰는 순간
경고창과 함께 더 이상 코멘트 등록이 안됩니다. 각 게시물마다 10개씩만 쓸 수 있다는 말이되는거죠.
현재 시각 본 소스내용 수정됐으니, 수정된 내용으로 한번 해보세요.

======

write_alert(10,'up','c','humor'); 요렇게 삽입하시면, 각 게시물 안에서 10개 넘어가면이 아니고,
게시판내에 게시물들에 포함된 모든 자신의 코멘트를 합친 갯수가 10개 넘어가면으로 처리됩니다.
아쵸오님 / 꼭 필요한 기능이었는데..... 감사~~
그런데요, 한개의 게시판이 아니라 그 스킨을 사용하는 모든 게시판에서 다 기능을 사용하려면 어떻게 하면 되나요?
일일이 스킨 파일의 상단에 다 적어줘야 하는지요....

그리고 또 하나더요
예를 들어
write_alert(3,'up','c','humor',,12);
라고 적으면 12시간 이내 유머게시판에 코멘트를 3개이상 쓰면 안된다는 뜻인가요?
전체 14 |RSS
그누4 팁자료실 내용 검색

회원로그인

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