테스트 사이트 - 개발 중인 베타 버전입니다

소스 한번 봐주실수있을까요? 도배방지. 채택완료

김마린2 3년 전 조회 1,527

</p>

<p><?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;

}</p>

<p>//관리자나 글 수정시에는 체크하지 않는다

if(!$is_admin&&($w!='u')){

//연속된 글을 작성 하였더라도 해당 시간이 지나면 글쓰기 가능. 사용하지 않으려면 값을 0으로 설정

$write_time=24; //단위 시간

//$write_time옵션 사용시 해당 옵션을 활성화 하면 도배 게시물에서 제일 마지막 게시물의 시간을 체크한다.

//0은 도배 게시물중 제일 오래된(시간상) 게시물, 1은 도배 게시물중 가장 최근 게시물.

$last_list=0;

//연속글 카운트 원하는 숫자로 수정

$write_count=2;

//회원이면 아이디 비회원이면 아이피를 가져온다

$field=$is_member?'mb_id':'wr_ip';

//$write_count를 참고하여 마지막 작성된 글의 아이디 혹은 아이피를 가져온다

$test=sql_query(" select $field, 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=sql_fetch_array($test)) {

 if($name_ip==$test_list[$field]){

  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=$g5['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-$g5['server_time']);

  $error_text='\n다른사람이 글을 작성하지 않는다면 다음글은\n'.$write_time4.' 후에 작성 가능합니다.\n('.date('Y.m.d A.g:i:s',$write_time3).')';

  }

  alert('글을 '.$write_count.'개이상 연속으로 작성할 수 없습니다.'.$error_text);

 }

}

?>

 

 

위 그누보드 도배방지 관련 팁을 찾아 적용했는데

아래와 같이 동작을 하는거 같은데 시간이..

460956시간 카운터가 떠버리네요...

 

어떤 문제일까요 ㅠㅠ

 

 

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

답변 1개

채택된 답변
+20 포인트
3년 전

$write_time4을 보시면 $write_time3 하고 $g5['server_time'] 부분을 각각 찍어보시면 될것 같습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

김마린2
3년 전
$write_time3 이거자체가 40000시간이 찍혀버리네요 ㅠ

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

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

로그인