제로보드4는 공식적으로 더 이상 개발되지도 배포되지도 않습니다.
제로보드4를 사용하기 위한 팁보다 제로보드4를 안전하고 무사히 다른 툴로 이전하는 팁들을 게재해주시면 감사하겠습니다.
시간이 오래 지난 만큼 오래된 프로그램은 보안 및 사용성에 있어 문제가 많으니 이해 바랍니다.

./files/attach/images/138/851791/Capture1w.gif
로봇에 의한 광고글을 못올리게하는 방법입니다..
요즘 워낙에,,봇들이 설치고 다녀서리,, 함 올려봅니다..-_--
원리는 글쓰기에서 랜덤숫자로된 코드 이미지를 보여주고 값을 입력하게한후..
키값이 맞으면 등록, 틀리면,, 등록을 못하게하는... 직접 설치해보시면 아실겁니다..^^;

이미지 코드 샘플은 위 이미지와 같습니다.

그럼.. 소스 나갑니다..

아래소스를 code_img.php로 저장후 제로보드(bbs)폴더안에 넣습니다..
<?
// 향상된 난수발생,생성.
mt_srand(hexdec(substr(md5(microtime()), -8)) & 0x7fffffff);
$rand_code .= mt_rand(1000,9999);

//anti_code폴더에 권한과 쓰기
$fp = fopen("anti_code/".$_GET['anti_robotCode'].".hnx","w") or die("쓰기에 실패");  
fwrite($fp, md5($rand_code), 1024);
chmod("anti_code/".$_GET['anti_robotCode'].".hnx", 0666) or die("권한 실패");
fclose($fp);
header ("Content-type: image/png");

//그림의 가로크기
$width = "80";
//그림의 세로크기
$height = "22";
$im = @imagecreate ($width, $height) or die ("이미지 에러!!");
  
//그림안의 색(rgb)
ImageColorAllocate($im, 255,255,255);
  
//그림의 테두리색(rgb색 코드)
$black = ImageColorAllocate($im, 219,219,219);
ImageRectangle($im,0,0,$width-1,$height-1,$black);
  
for ($i=0;$i<=128;$i++)
{
$point_color = imagecolorallocate ($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
imagesetpixel($im,mt_rand(2,128),mt_rand(2,38),$point_color);
}
for ($i=0;$i<=5;$i++)
{
$text_color = imagecolorallocate ($im, mt_rand(0,255), mt_rand(0,128), mt_rand(0,255));
$x = 5 + $i * 20;
$y = mt_rand(1,5);
imagechar ($im, 5, $x, $y,  $rand_code{$i}, $text_color);
}
imagepng ($im);
imagedestroy ($im);
die();
?>

그다음..

제로보드(bbs)폴더/script/script_write.php 파일을 php전용 에디터로 열어..
if(!document.write.name.value)
  {
   alert('이름을 입력하여 주세요.');
   document.write.name.focus();
   return false;
  }
요부분 아래에 다음 소스를 넣어줍니다.

if(!document.write.anti_robotCodeimg.value)
  {
   alert('코드를 입력해주세요.');
   document.write.anti_robotCodeimg.focus();
   return false;
  }

그다음..

제로보드(bbs)폴더안 write_ok.php를 php전용 에디터로 열어..
24번째줄...
// 각종 변수 검사;;
if(!$member[no]) { 요거 다음줄에 아래소스를 넣습니다.

$codeFile = file("anti_code/".$_GET['anti_robotCode'].".hnx");        
if($codeFile[0] != md5($_POST['anti_robotCodeimg'])) Error("코드입력이 올바른지 확인하세요.");

그다음.. 소스 끝부분쯤에..
// MySQL 닫기 이거 바로위에 아래소스를 추가합니다.
// 파일 자동삭제.
$anti_codedir = './anti_code/';
$dir = opendir($anti_codedir);
while((false!==($file=readdir($dir))))
if($file!="." and $file !="..") @unlink($anti_codedir.'/'.$file);
closedir($dir);

그다음..

사용중인 스킨폴더안 write.php를 php전용 에디터로 열어..
소스 맨위에..
<?
// 향상된 난수발생,생성.
mt_srand(hexdec(substr(md5(microtime()), -8)) & 0x7fffffff);
$rand_codei = md5(mt_rand(1000000, 9999999));
?>
추가합니다..
그다음..
action=write_ok.php 이부분을..
action=write_ok.php<? echo "?anti_robotCode=".$rand_codei; ?> 이렇게 변경.

그다음..
이미지 코드가 보일 자리에..

<?if(!$member[no]){?>코드입력: <input name="anti_robotCodeimg" type="text" style="width:90px;height:21px;" class="input"> <img src="code_img.php<? echo '?anti_robotCode='.$rand_codei;?>" border="0" style="vertical-align:top;"><?}?>

넣어주세요...

이제 마지막으로..
제로보드폴더(bbs)안에 anti_code폴더를 만들어 줍니다..

이제 남은것은 테스트....^^;=3=3=3
############################################################
응용하면 회원가입페이지, 코멘트등에서도 사용할 수 있겠죠..^_^
이 방법 말고 세션을 이용한 방법도있는데..그 방법은 귀차니즘으로 안올림.;;...=3=3=3

[레벨:1]이순신장군

2008.05.17 17:29:42
*.233.10.222

중요한점 한가지....
teachnew21님의 회원가입 응용코드를 해보았는데,
향상된 난수 생성은 code_img.php 에 있기 때문에 member_join.php에 생성하지 말아야 합니다.
그렇지 않으면 두개의 난수가 생성되서 코드를 입력 했을 시 매치가 되지 않기 때문에 코드 오류가 뜹니다. 가입이 되지를 않는 것이죠.
고로 member_join.php의 난수생성부분 코드는 지워주는 것이 좋다고 생각합니다.

profile

[레벨:5]채준배

2008.09.20 18:08:22
*.45.205.25

xe에서도 쓸 수 있는 기능인가요?

[레벨:1]이동화309

2008.10.17 11:08:05
*.163.195.75

너무 너무 잘 사용하고 있습니다..감사합니다.
그런데... 제가 사용하는 깜보700스킨 (ggambo7200_board) 게시판에는
write.php에 action="<?=$dir?>/write_ok.php
이렇게 되어 있습니다.
그래서
action=<?=$dir?>/write_ok.php<? echo "?anti_robotCode="<?=.$rand_codei; ?> 로 수정했더니
코드를 입력하지 않으면 글이 써지지는 않지만,
엉뚱한 숫자를 입력해도 글쓰기가 됩니다.
광고글도 여전히 올라옵니다..

저는 php나 cgi나 전혀 문외한입니다.
자세히 알려주시거나 tae@kabcofno.org로 알려주시면 정말 감사하겠습니다.
List of Articles
번호 제목 글쓴이 날짜 조회 수
3789 글쓰기 모드에서 카테고리 자동 선택하기 [9] [레벨:1]쥐도령 2005-08-10 4394
3788 질문 게시판에 있어야 될 답변 만족도 표시하기 !! imagefile [11] [레벨:8]웹스터디 2005-08-10 2050
3787 슈팅스타님의 네이버까페 게시판스킨 수정(레벨아이콘,카테고리 출력, ... imagefile [7] [레벨:2]자두나무 2005-08-10 4690
3786 아이디&비밀번호 찾기 클릭시 setup파일을 수정해줘야 된다??? [3] [레벨:2]미니온 2005-08-02 4480
3785 게시판 내용보기 권한 없을 경우 경고창 띄우기 (최근게시물에서도 ... [13] [레벨:3]꿈바라기 2005-08-07 4151
3784 초보의 팁!!(사진 올릴때...)이것두 팁인가?? [5] [레벨:1]김규찬 2005-08-06 2941
3783 쪽지에 HTML 적용, 자바스크립트 차단, 허용태그, 태그로만 작성시... [12] [레벨:5]柔月光 2005-08-06 4792
3782 자동으로 유령회원 정리하기 [4] [레벨:1]퍼미션 2005-08-05 4113
3781 https프로토콜에도 링크생성하기(;) [레벨:8]플로렐라 2005-08-05 2538
3780 Firefox(불여우)에서 이름클릭시 Layer(레이어)뜨게 하기 imagefile [26] [레벨:2]Ryan 2005-08-05 4492
3779 내용(memo) 크기 16MB 로 늘리기 [5] [1] [레벨:2]Ryan 2005-08-04 2767
3778 [정보] 1970년 완전 해결법 [4] [레벨:3]k2love 2005-08-04 4416
3777 W3C 표준 HTML 검사. [10] [레벨:2]Ryan 2005-08-03 2212
3776 아이디의 최대 입력 갯수는 20글자입니다. [2] [레벨:6]아가페 2005-08-03 1903
3775 제로 보드 RSS 피드제공하기 [7] [레벨:1]지율 2005-08-01 4914
3774 공지사항글에는 코멘트 못달게 하기 [12] [레벨:1]thisbe 2005-07-29 3724
3773 새쪽지 새창으로 뜨게 하는 방법 [7] [레벨:2]황효복 2005-07-29 6093
3772 회원가입에서 회원이름에 필터링을 적용 [9] [레벨:20]영진 2005-07-28 4123
» [1차수정]광고,로봇글 제한하기[이미지 코드사용] imagefile [53] [레벨:19]토토루 2005-07-27 12453
3770 간단하게 사용권한 표시 [2] [레벨:18]하우 2005-07-27 3563