우리 홈 게시판 스팸 차단
- 앞으로 할 작업 이해
먼저, 앞으로 할 작업을 간단히 요약해서 보여 드리겠습니다. 아래 제로보드4의 파일 구성 그림을 참조합니다.
작업의 순서는, 아래와 같습니다.
① 지엠스팸프리 설치 및 정상작동 확인 (사용방법 1번 게시물 참조)
② 게시물 쓰기에 적용 A , B
③ 덧글 쓰기에 적용 A , B
④ 회원가입 폼에 적용 A , B위 그림을 유심히 보시기 바랍니다. 아래 설명에도 계속 참고할 것입니다.
특히, 위에서 '해당 스킨 디렉토리'라고 쓰인 부분은, 해당 게시판이 사용중인 스킨의 디렉토리를 말합니다.
위 그림은 제로보드 관리자 페이지에서 해당 게시판 설정에 들어갔을 때의 화면입니다. 어떤 스킨을 사용하는가에 따라 위 빨간색 박스 안에 제각기 다른 이름이 들어가 있습니다.
아래 설명중 '해당 스킨 디렉토리'라는 말은, 'nzeo_ver4_bbs' 꼭 디렉토리를 뜻하는 것은 아닙니다. 해당 스킨 디렉토리는 여러분이 직접 찾으셔야 합니다. 또한, 홈페이지에 여러 개의 스킨을 사용하신다면, 모든 스킨에 다 적용하셔야 합니다.
- 게시물 쓰기에 적용 A : write.php
해당 스킨 디렉토리의 write.php 파일을 에디터로 열고, <?=$hide_start?>라고 씌어진 코드를 찾습니다. 이는, 회원 로그인시에는 출력하지 말라는 명령의 코드입니다. 따라서, 위 코드의 아래에 다음과 같은 코드를 넣습니다.
<?=$hide_start?>
<tr>
<td>스팸차단코드</td>
<td>
<p><img src="https://해당주소/zmSpamFree/zmSpamFree.php?zsfimg=<?php echo time();?>" id="zsfImg" alt="아래 새로고침을 클릭해 주세요." title="SpamFree.kr" /></p>
<p><input type="text" size="8" maxlength="10" name="zsfCode" id="zsfCode" /></p>
<p><a href="#" onclick="document.getElementById('zsfImg').src='https://해당주소/zmSpamFree/zmSpamFree.php?re&zsfimg=' + new Date().getTime(); return false;" title="새로고침">새로고침</a></p>
</td>
</tr>※ 위 코드에서 빨간색으로 된 부분은 자신의 서버 주소로 바꿔야 합니다.
이제 입력폼은 다 수정되었습니다. 검증 페이지 수정은 조금 더 쉽습니다.
- 게시물 쓰기에 적용 B : write_ok.php
먼저, 맨 위의 이미지를 다시 보시고 어디에 위치한 파일인지 확인합니다.
write_ok.php 파일을 열면 처음부분(약 26번째 줄)에 if(!$member[no]) {라는 코드가 있습니다. 이 코드 바로 아래에 아래와 같은 코드를 삽입합니다.
if(!$member[no]) {
// 지엠스팸프리 검사
include 'zmSpamFree/zmSpamFree.php';
if ( !zsfCheck( $_POST['zsfCode'], $_GET['id'] ) ) { Error ('스팸차단코드가 틀렸습니다.'); } - 덧글 쓰기에 적용 A : view_write_comment.php
해당 스킨 디렉토리의 view_write_comment.php 파일을 에디터로 열고, <?=$hide_c_password_start?>라고 씌어진 코드를 찾습니다. 이는, 회원 로그인시에는 출력하지 말라는 명령의 코드입니다. 따라서, 비회원에게만 적용하려면, 위 코드의 아랫부분에, 회원에게도 적용하려면 위 코드 윗부분에 아래와 같은 코드를 입력합니다.
<?=$hide_c_password_start?>
<tr>
<td>스팸차단코드</td>
<td>
<p><img src="https://해당주소/zmSpamFree/zmSpamFree.php?zsfimg=<?php echo time();?>" id="zsfImg" alt="아래 새로고침을 클릭해 주세요." title="SpamFree.kr" /></p>
<p><input type="text" size="8" maxlength="10" name="zsfCode" id="zsfCode" /></p>
<p><a href="#" onclick="document.getElementById('zsfImg').src='https://해당주소/zmSpamFree/zmSpamFree.php?re&zsfimg=' + new Date().getTime(); return false;" title="새로고침">새로고침</a></p>
</td>
</tr>※ 위 코드에서 빨간색으로 된 부분은 자신의 서버 주소로 바꿔야 합니다.
- 덧글 쓰기에 적용 B : comment_ok.php
먼저, 맨 위의 이미지를 다시 보시고 어디에 위치한 파일인지 확인합니다.
comment_ok.php 파일을 열면 처음부분(약 22번째 줄)에 if(!$member[no]) {이라는 코드가 있습니다. 이 코드 바로 아래에 다음과 같은 코드를 삽입합니다.
if(!$member[no]) {
// 지엠스팸프리 검사
include 'zmSpamFree/zmSpamFree.php';
if ( !zsfCheck( $_POST['zsfCode'], $_GET['id'] ) ) { Error ('스팸차단코드가 틀렸습니다.'); } - 회원가입에 적용 A : member_join.php
먼저, 맨 위의 이미지를 다시 보시고 어디에 위치한 파일인지 확인합니다.
제로보드 디렉토리의 member_join.php 파일을 에디터로 열고, Name 입력폼다음 줄을 찾습니다. 약 223째줄 다음입니다. 이 부분에 아래 코드를 넣습니다.
<tr>
<td>스팸차단코드</td>
<td>
<p><img src="https://해당주소/zmSpamFree/zmSpamFree.php?zsfimg=<?php echo time();?>" id="zsfImg" alt="아래 새로고침을 클릭해 주세요." title="SpamFree.kr" /></p>
<p><input type="text" size="8" maxlength="10" name="zsfCode" id="zsfCode" /></p>
<p><a href="#" onclick="document.getElementById('zsfImg').src='https://해당주소/zmSpamFree/zmSpamFree.php?re&zsfimg=' + new Date().getTime(); return false;" title="새로고침">새로고침</a></p>
</td>
</tr>※ 위 코드에서 빨간색으로 된 부분은 자신의 서버 주소로 바꿔야 합니다.
- 회원가입에 적용 B : member_join_ok.php
먼저, 맨 위의 이미지를 다시 보시고 어디에 위치한 파일인지 확인합니다.
member_join_ok.php 파일을 열면 처음부분(약 10번째 줄)에 // DB 연결이라는 주석이 있습니다. 이 코드 바로 위에 아래와 같은 코드를 삽입합니다.
include 'zmSpamFree/zmSpamFree.php';
if ( !zsfCheck( $_POST['zsfCode'] ) ) { Error ('스팸차단코드가 틀렸습니다.'); }
// DB 연결 - 디자인을 마무리 합니다.
일단, 제대로 돌아가는지 확인하신 후, 스타일이나 CSS를 수정하여 디자인을 마무리합니다.
- 주의사항
맨 위에서 보았던 이미지를 다시 보겠습니다.
특정 스킨은 write_ok.php 파일이나 comment_ok.php 파일을 제로보드의 자체 파일을 사용하지 않고, 해당 스킨 안에 따로 제작한 프로그램으로 돌리곤 합니다.
따라서, 이러한 스킨을 사용하실 경우에는, 해당 폴더 안에 있는 write_ok.php 와 comment_ok.php 파일도 수정하셔야 제대로 사용 가능합니다.
- 특정 게시판만 적용하는 방법
아래 코드는, 위 설명중 3번 게시물 쓰기에 적용 B, 5번 덧글 쓰기에 적용 B 에서 수정했던 코드입니다.
if(!$member[no]) {
// 지엠스팸프리 검사
include 'zmSpamFree/zmSpamFree.php';
if ( !zsfCheck( $_POST['zsfCode'], $_GET['id'] ) ) { Error ('스팸차단코드가 틀렸습니다.'); }위 코드에서 아래와 같이 몇 줄만 더 추가하면 됩니다. (빨간색)
아래 코드 예는, '방명록'(guestbook)만 적용할 경우의 예이므로, guestbook이 아닌 다른 게시판명을 입력하시면 됩니다.
if(!$member[no]) {
// 지엠스팸프리 검사
if ($id=='gueskbook') {
include 'zmSpamFree/zmSpamFree.php';
if ( !zsfCheck( $_POST['zsfCode'], $_GET['id'] ) ) { Error ('스팸차단코드가 틀렸습니다.'); }
}맨 아랫부분에 괄호'}' 닫는 것을 잊지 마세요.
만일, 여러 개의 '방명록(guestbood)'과 '자유게시판(free)' 2개의 게시판에 적용시키고 싶다면, 아래와 같이 합니다.
if(!$member[no]) {
// 지엠스팸프리 검사
if ($id=='gueskbook' OR $id=='free') {
include 'zmSpamFree/zmSpamFree.php';
if ( !zsfCheck( $_POST['zsfCode'], $_GET['id'] ) ) { Error ('스팸차단코드가 틀렸습니다.'); }
출처 : https://www.casternet.com/spamfree/zmb/view.php?bd=manual&no=5&page=1
전에 한번 적용해 볼려다가 무엇이 잘못되었는지...마음 먹은되로 잘 되지않아
소스만 뚫어지게 쳐다보다가 보류해뒀는데
오작교님 소스보고 저도 한번 배워봐야 겠습니다
유용한 정보 감사드려요^^