제로보드 안티스팸 설치법

2010.05.12 07:33

조인상 조회 수:7049

원문 : http://www.ischo.net -- 조인상 // 시스템 엔지니어

Writer : http://www.ischo.net -- ischo // System Engineer in Replubic Of Korea

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어

+++++++++++++++++++++++++++++++++++++++++++++++++++++++


** 설치 안내
1. 게시판 스크립트가 있는 디렉토리에 AntiSpam.php 파일을 업로드하고 세팅값을 조정.
==>bbs폴더로 들어가서 업로드.. 위치가 bbs/AntiSpam.php ==> 이렇게 되겠지요~
초보님들은 모르시면 세팅값 그냥 놔두셔도 되요.

2. main.exe 파일을 같은 디렉토리에 업로드하고, 실행권한을 준다 ( 예 : chmod +x main.exe ) Linux용과 Windows 용이 있으니 구분하여 업로드 하시기 바랍니다.

==> 이것도 위치가 bbs/main.exe가 되겠구요.. 대부분 linux용을 쓴대요...linux폴더에 있는 main.exe파일을 업로드 하세요..

3. 같은 디렉토리에 AntiSpamTmp라는 이름(또는 AntiSpam.php에 세팅한 이름)의
하위디렉토리를 생성하고, 모든 권한을 준다. ( 예 : chmod 777 AntiSpamTmp )

==> 이것도 위치가 bbs/AntiSpamTmp가 되구요. 폴더에 마우스오른쪽버튼을 누르시면
권한설정이라는게 나오는데 현재모드칸에 777로 바꿔주세요.

4. 게시판의 글쓰기 폼 스크립트에서 AntiSpam.php 파일을 include 하고
AntiSpam Class 객체를 생성한 뒤, 멤버함수 MakeForm()을 실행하여 입력폼 삽입.

예 : 제로보드 4.1 pl 3 기준
(게시판 디렉토리)/skin/(스킨 디렉토리)/write.php 파일 97 라인에 아래 내용 삽입
<!-- Anti Spam -->
<tr>
<td colspan=2 align=center>
<?
include "./AntiSpam.php";
$AS = new AntiSpam;
$AS->MakeForm();
?>
</td>
</tr>
<!-- Antispam End -->


==> 예에 있는 소스를 그대로 복사해서 원하시는 곳에 넣으시면 되요..
제목쓰는곳 옆에 넣고 싶으시면 거기에 넣으시고.. 저는 이모티콘 윗쪽에 넣었어요..
아래 소스 중에서 예에 있는 소스위치를 잘 찾아보세요..
<tr>
<td><img src="<?=$dir?>/t.gif border=0 height=1><br><table cellspacing=0 cellpadding=0 width=100% height=100%><tr><td align=left>    <b>select</td></tr></table></td>
<td>
<?=$category_kind?>
<?=$hide_notice_start?> <input type=checkbox name=notice <?=$notice?> value=1> 공지사항 <?=$hide_notice_end?>
<?=$hide_html_start?> <input type=checkbox name=use_html <?=$use_html?> value=1> HTML사용 <?=$hide_html_end?>
<input type=checkbox name=reply_mail <?=$reply_mail?> value=1> 답변메일받기
<?=$hide_secret_start?> <input type=checkbox name=is_secret <?=$secret?> value=1> 비밀글 <?=$hide_secret_end?>
    <img src=<?=$dir?>/btn_down.gif border=0 valign=absmiddle style=cursor:hand; onclick=zb_formresize(document.write.memo)>
</td>
</tr>

<tr>
<td colspan=2 style=padding:5px><textarea name=memo <?=size2(90)?> rows=18 class=zv3_w_textarea><?=$memo?></textarea></td>
</tr>
<!-- Anti Spam -->
<? if(! $member[no]) { ?>
<tr>
<td><img src="<?=$dir?>/t.gif border=0 height=1><br><table cellspacing=0 cellpadding=0 width=100% height=100%><tr><td align=left valign=middle ><b>  antiSpam</td></tr></table></td>
<td> <?
include "./AntiSpam.php";
$AS = new AntiSpam;
$AS->MakeForm();
?>
</td>
</tr>
<? } ?>
<!-- Antispam End -->

<!-- 삽입한 이모콘티 -->

<tr>
<td colspan=2> <? include "emoticon/emoticon2.php"; ?> </td>
</tr>


5. 게시물을 저장하는 스크립트에서 같은 요령으로 AntiSpam Class 객체를 생성하고,
상단에서 멤버함수 Check()를 실행하여 입력된 숫자를 체크한다.
게시물이 저장된 후에는 멤버함수 Done()을 실행하여 임시파일을 삭제한다.
예 : 제로보드 4.1 pl 3 기준
(게시판 디렉토리)/write_ok.php 파일을 아래와 같이 수정

상단 include "_head.php"; 라인 아래에 다음 내용 삽입
include "./AntiSpam.php";
$AS = new AntiSpam;
// AntiSpam 체크
$AS->Check();

하단의 "페이지 이동" 부분 위에 아래 내용 삽입
// AntiSpam 파일 정리
$AS->Done();

==> bbs/write_ok.php를 예그대로 삽입하여 수정하시면 됩니다.

===============================================================
이렇게 하면 글쓸때 숫자를 써야 글등록이 되거든요..
근데 로그인한 회원들은 숫자를 안써도 되게 하려면요..
위 5번에서 수정한 bbs/write_ok.php에 삽입하는 내용을 다음처럼 하면되요.

if(! $member[no]) {
==>요것을 5번에서 삽입한 것 각각 바로윗줄에 추가하면 되요. 합치면 아래처럼되겠죠.

include "_head.php"; 라인 아래

if(! $member[no]) {
include "./AntiSpam.php";
$AS = new AntiSpam;
// AntiSpam 체크
$AS->Check();
}


하단의 "페이지 이동" 부분 위

// AntiSpam 파일 정리
if(! $member[no]) {
$AS->Done();
}

================================
그럼 한개의 게시판스킨만 적용하고 싶다면
역시 write_ok.php파일에 다음소스를 삽입하시면 되요...

include "_head.php"; 라인 아래

if($setup[skinname]=='스킨이름') {
include "./AntiSpam.php";
$AS = new AntiSpam;
// AntiSpam 체크
$AS->Check();
}

하단의 "페이지 이동" 부분 위

if($setup[skinname]=='스킨이름') {
$AS->Done();
}

========================================
종합.. 회원은 글쓸때 숫자를 입력하지 않아도 되게하고
2개의 게시판스킨에만 적용되게 하려면..
1,2,3,4번은 모두 같구요..

5번만 bbs/write_ok.php파일에 다음소스를 삽입하면 됩니다.

include "_head.php"; 라인 아래 삽입

if(! $member[no]) {
if($setup[skinname]=='스킨이름1' OR $setup[skinname]=='스킨이름2') {
include "./AntiSpam.php";
$AS = new AntiSpam;
// AntiSpam 체크
$AS->Check();
}
}


하단의 "페이지 이동" 부분 위 삽입

if(! $member[no]) {
if($setup[skinname]=='스킨이름1' OR $setup[skinname]=='스킨이름2') {
$AS->Done();
}
}


제대로 썼는지 모르겠네요~~ 화이팅!!





관련글 : http://www.nzeo.com/bbs/zboard.php?id=cgi_tip&page=2&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=광고&select_arrange=headnum&desc=asc&no=4253
서버에 요청 중입니다. 잠시만 기다려 주십시오...