제로보드4 게시판에 광고차단 솔루션 적용하기

2009. 9. 27. 14:10 [ 기억 저편의 것들/미분류 ] 모바일 버전으로 보기
본 포스팅은 꺼져스킨(2007년9월이후자료)이 설치된 제로보드4에서만 쓸모있는 내용이며,
지난 6월 romeo1052님께서 요청하셔서, 특별히 없는시간 쪼개고 쪼개서 작성하다가,
뜻하지 않는 곳에서 약간의 오류가 발생하는 듯 하여, 한동안 고심중에 어느사이 방치해버렸다가,
개인사정상 지금 공개하지 않으면 올해를 넘길것 같아서 이제라도 공개합니다..
테스트 브라우저는 IE6.0, IE7.0, 구글크롬, 파이어폭스, 오페라(기억이 잘..?) 입니다.

경우에 따라서 약간의 오류가 발생할 수 도 있음을 감수하고라도 사용하실 분들은 사용하십시오.


광고차단 솔루션 적용하기 내용에 앞서,
오래전부터 제로보드4 게시판을 사용하면서 느끼는 가장 큰 불편함은 무분별하게 올라오는 광고글이었습니다. 하루에도 수십,수백개씩 올라오는 광고성 글과 댓글은 저의 성격을 버려놨습니다.
그리고, 다년간 제로보드4용 꺼져스킨을 만들어오면서 스팸에 대한 고민을 많이 했으며, 다양한 시도와 여러번의 시행착오를 거쳐서 지금은 어느정도 스팸에 유연하게 대처하는 방법들을 터득했습니다. 그 중에 하나가 꺼져스킨에 사용되는 "광고차단 솔루션"과 "스팸 필터링"입니다.




스팸차단 솔루션


스팸필터링





본 게시물은
꺼져스킨을 사용하지 않는 게시판에서도 스팸필터링 적용하기 에 이은 그 두번째,
꺼져스킨을 사용하지 않는 게시판에서도 광고차단 솔루션 적용하기 에 해당합니다.

[광고글 자동등록 차단솔루션]은 강명수님(widerock골뱅이korea.com) 께서 만드신 프로그램이며,
이를 꺼져스킨에 맞게 조금 변형하였으며, 꺼져스킨 이외의 스킨에도 적용하는 방법에 대해서 소개합니다.
또한, 광고차단 기능에 일당백 역할을 해주는 '꺼져스킨 등록코드' 내용도 포함되어 있습니다.



1. 첨부한 파일의 압축을 풀어서 기존에 사용중인 스킨폴더에 업로드.

첨부된 zip파일에는 antispam.php, anticheck.php, t.gif 파일이 있습니다.
꺼져스킨에 설치된 스팸차단 솔루션을 꺼져스킨이 아닌 다른 스킨에서도 적용하기를 원하시면,
첨부파일의 압축을 풀고 기존에 사용중인 해당 스킨폴더에 위 파일들을 업로드하시면 됩니다.
첨부된 파일은 그대로 업로드하셔도 되고, 해당 파일을 열어서 언어팩 부분을 수정후 업로드하셔도 됩니다.



2. 사용중인 스킨폴더내 setup.php 파일 수정.

[1]
소스 최상단에 아래의 코드를 추가합니다.

(Language : c)
  1. <?php
    // 안티스팸 코드입력  -  by ggerzer
    include "$dir/antispam.php";
    ?>

' -  by ggerzer ' 는 나중에 원본과 구분하기 쉽게, 찾아보기 쉽게 하기 위해 덧붙이는 표시입니다.


3. 사용중인 스킨폴더내 write.php 파일 수정.

[1]
소스 최상단에 아래의 코드를 추가합니다.

(Language : c)
  1. <?php
    // 안티스팸 코드입력  -  by ggerzer
    include "$dir/antispam.php";
    ?>


[2]
소스 중간에 (메인 테이블이 시작되는 그 위에쯤에다가) 아래의 내용을 추가합니다.

(Language : c)
  1. <div id="gglightbox2" style="z-index: 888; position:absolute; display:none; width:0; height:0; background-color:#000000; filter:Alpha(opacity=30); opacity:0.3; -moz-opacity:0.3;"></div>
  2. <div align=center><table width='<?=$width?>' border="0" cellspacing="0" cellpadding="0"><tr>
  3. <td style="display:block;position:relative;top:0;left:0;z-index:991;"><a name="InputCode"></a><div id="ggifrmbox" style="position:absolute;top:;left:;z-index:992;visibility:hidden;"></div></td></tr>
  4. <tr><td height=1><img src="<?=$dir?>/t.gif" border=0 width="100%" height=1 name="gg_write_width"></td></tr>
  5. </table></div>


[3]
<form method=post name="write" action=write_ok.php
이 부분을 찾아보시면, 스킨에 따라서 onsubmit="$%%$" 이 있기도 하고 없기도 합니다.
(1) 만일 없다면, onsubmit="return GG_CheckEntry();" 를 추가해줍니다. -일단락-
(2) 만일 있다면, 그대로 둔 상태에서 기존에 사용중인 해당 펑션을 찾아서 수정해줍니다.
기존에 onsubmit="return check_submit();"로 되어있다면, check_submit를 검색합니다.
[예시 1-1]
<script language="javascript">
 function check_submit()
 {
어쩌구저쩌구이래저래..
 }
</script>

위와같이 정의되어 있다면, 펑션 종결 바로 위에 GG_CheckEntry(); 를 추가해줍니다.
[예시 1-2]
<script language="javascript">
 function check_submit()
 {
어쩌구저쩌구이래저래..
// document.forms["write"].submit();       <----- 있다면 앞에 주석처리해서 (//) 무효화해 주세요.
GG_CheckEntry();
return false;             <------ 없다면 추가해 주세요.
 }
</script>


[4]
<form 으로 시작되는 내용을 찾아서 <input type=hidden name=mode value="<?=$mode?>"> 뒷부분에 아래의 내용을 추가합니다.

(Language : c)
  1. <input type=hidden name="r_code" value="<?=$_rcode?>" />
  2. <input type=hidden name="AntiSpamPass" value="" />



4. 사용중인 스킨폴더내 view_write_comment.php 파일 수정.

[1]
위의 3.-[2]의 코드내용을 view_write_comment.php 파일에도 추가해줍니다.

[2]
<form method=post name="write" action=comment_ok.php
이 부분을 찾아보시면, 스킨에 따라서 onsubmit="$%%$" 이 있기도 하고 없기도 합니다.
(1) 만일 없다면, onsubmit="return GG_CheckComment();" 를 추가해줍니다. -일단락-
(2) 만일 있다면, 위의 3.-[3]과 동일한 방법으로 GG_CheckComment(); 를 추가해서 수정해줍니다.

[3]
위의 3.-[4]의 코드내용을 view_write_comment.php 파일에도 추가해줍니다.





5. 제로보드 폴더내 write_ok.php 파일과 comment_ok.php 파일 수정.

제로보드 폴더내 write_ok.php 파일과 comment_ok.php 파일을 열어서 소스 상단부분의
include "_head.php";
이 부분을 찾아서 그 아랫줄에 다음의 내용을 추가합니다.

(Language : c)
  1. $r_code = $HTTP_POST_VARS[r_code];
  2.  
  3. /***************************************************************************
  4. * GGERZER SKIN 등록코드 체크  -  by ggerzer
  5. **************************************************************************/
  6. if(!$member[no]) {
  7.  @include "ggerzer_skin/ggerzer_co.php3";
  8.  if($_rcode) {
  9.   if($_rcode != $r_code) {
  10.    Error("등록코드가 올바르지 않습니다.<br>정상적으로 글을 작성하여 주시기 바랍니다.");
  11.   }
  12.  }
  13. }
  14.  
  15.  
  16. /***************************************************************************
  17. * 안티스팸코드 체크  -  by ggerzer
  18. **************************************************************************/
  19. if(!$member[no]) {
  20.   @include "ggerzer_skin/AntiSpam2.php";
  21.   AntiSpamCheck();
  22. }


여기서 주의할 점은;;
1. 특정 스킨에서만 스팸차단 솔루션을 적용할 경우에는 위의 내용(5.)을 반드시
if($setup[skinname]=="스킨이름") {

}
로 감싸주셔야 합니다.
안그러면, 스팸차단 솔루션을 적용하지 않는 게시판에서 비회원 글작성시 오류가 발생하게 됩니다.

2. 특정 몇몇 스킨에서만 스팸차단 솔루션을 적용할 경우에는
if($setup[skinname]=="A스킨"||$setup[skinname]=="B스킨"||$setup[skinname]=="C스킨" ) {

}
로 감싸주고,

3. 특정 게시판에서만 적용할 경우에는
if($id=="게시판이름") {

}
로 감싸주고, 특정 몇몇 게시판에서만 적용할 경우에는 위의 2.와 같이 '또는' ( || ) 으로 연결해줍니다.



다시한번 말씀드리지만,
본 내용은 귀하의 계정에 제로보드4용 꺼져스킨이 설치된 경우에만 정상적으로 동작되는것임을 밝히며,
php파일을 수정하기전에는 혹시모를 사태를 대비해서 미리 백업을 해두셔야만 합니다.





Write a comment