도배방지 (연속글 차단) (코드수정) > 그누4 팁자료실

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!

그누4 팁자료실

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

도배방지 (연속글 차단) (코드수정) 정보

도배방지 (연속글 차단) (코드수정)

본문

질문게시판에 질문이 있길래 적어봅니다.
write_update.head.skin.php에 아래코드 추가 (스킨에 write_update.head.skin.php가 없으면 파일 추가)

if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
//시간계산
function oekaki_paint_time($paint_time){
 $ptime=sprintf("%d시간 %d분 %d초",$paint_time/3600,($paint_time/60)%60,$paint_time%60);
 if($paint_time<3600)$ptime=sprintf("%d분 %d초",($paint_time/60)%60,$paint_time%60);
 if($paint_time<60)$ptime=sprintf("%d초",$paint_time%60);
 $array=array(' 0분',' 0초');
 $ptime=str_replace($array,'',$ptime);
 return $ptime;
}

//관리자나 글 수정시에는 체크하지 않는다
if(!$is_admin&&($w!='u')){
//연속된 글을 작성 하였더라도 해당 시간이 지나면 글쓰기 가능. 사용하지 않으려면 값을 0으로 설정
$write_time=24; //단위 시간
//$write_time옵션 사용시 해당 옵션을 활성화 하면 도배 게시물에서 제일 마지막 게시물의 시간을 체크한다.
//0은 도배 게시물중 제일 오래된(시간상) 게시물, 1은 도배 게시물중 가장 최근 게시물.
$last_list=0;
//연속글 카운트 원하는 숫자로 수정
$write_count=5;
//회원이면 아이디 비회원이면 아이피를 가져온다
$fild=$is_member?'mb_id':'wr_ip';
//$write_count를 참고하여 마지막 작성된 글의 아이디 혹은 아이피를 가져온다
$test=sql_query(" select $fild, wr_datetime from $write_table where wr_is_comment = '0' order by wr_id desc limit $write_count ");
$list_count=0;
//회원이면 아이디 비회원이면 아이피 할당
$name_ip=$is_member?$member['mb_id']:$_SERVER['REMOTE_ADDR'];
while($test_list=mysql_fetch_array($test)) {
 if($name_ip==$test_list[$fild]){
  if($write_time){
  if($last_list&&!$list_count)$lists=true; else if(!$last_list)$lists=true; else $lists=false;
  if($lists){
    $stime=strtotime($test_list['wr_datetime']);
    $write_time2=$g4['server_time']-$stime;
    $write_time3=($write_time*3600)+$stime;
    if($write_time2>=($write_time3-$stime)) break;
  }
  }
  $list_count++;
 }
}
//차단
if($list_count>=$write_count) {
  if($write_time){
  $write_time4=oekaki_paint_time($write_time3-$g4['server_time']);
  $error_text='\n다른사람이 글을 작성하지 않는다면 다음글은\n'.$write_time4.' 후에 작성 가능합니다.\n('.date('Y.m.d A.g:i:s',$write_time3).')';
  }
  alert('글을 '.$write_count.'개이상 연속으로 작성할 수 없습니다.'.$error_text);
 }
}


----------------------------
oekaki_paint_time()은 제 스킨에서 쓰던 함수인데 여러곳에서 유용하게 쓰입니다.
추천
5

댓글 13개

감사합니다
마지막 작성된 글이(같은아이디,아이피) 있어도 하루지나면 다시 글을 쓸수 있도록 할려면..?
어떻게 해야 하는지요?
//이 코드를
if(!$is_admin&&($w!='u')){

//이렇게 수정
if(!$is_admin&&($w!='cu')){

//이 코드를
$test=sql_query(" select $fild, wr_datetime from $write_table where wr_is_comment = '0' order by wr_id desc limit $write_count ");


//이렇게 수정
$test=sql_query(" select $fild, wr_datetime from $write_table where wr_parent = '$wr_id' and wr_is_comment = '1' order by wr_id desc limit $write_count ");

----------------------------
위에처럼 수정 하시고 사용하시는 스킨/write_comment_update.head.skin.php에 코드 추가 하시면 됩니다.
//관리자나 글 수정시에는 체크하지 않는다
if(!$is_admin&&($w!='u')&&($bo_table=='특정게시판 테이블명')){

--------------------
위에처럼 하면 특정 게시판만 적용됩니다
//관리자나 글 수정시에는 체크하지 않는다
if(!$is_admin&&($w!='u')){

위부분에서 관리자외 특정 아이디를 추가가 가능한가요^^
염치없이 물어 봅니다
$member_array=array('아이디1','아이디2','아이디3');
$member_ck=in_array($member['mb_id'],$member_array);

//관리자나 글 수정시에는 체크하지 않는다
if(!$is_admin&&($w!='u')&&!$member_ck){

-------------------------
$member_array에서 설정한 아이디는 체크하지 않습니다.
아이디는 원하는대로 추가 삭제 가능
전체 13 |RSS
그누4 팁자료실 내용 검색
  • 개별 목록 구성 번호 제목 작성자 작성일 추천 조회
  • 게시물이 없습니다.

회원로그인

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