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

로봇에 의한 광고글을 못올리게하는 방법입니다..
요즘 워낙에,,봇들이 설치고 다녀서리,, 함 올려봅니다..-_--
원리는 글쓰기에서 랜덤숫자로된 코드 이미지를 보여주고 값을 입력하게한후..
키값이 맞으면 등록, 틀리면,, 등록을 못하게하는... 직접 설치해보시면 아실겁니다..^^;
이미지 코드 샘플은 위 이미지와 같습니다.
그럼.. 소스 나갑니다..
아래소스를 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
너무 너무 잘 사용하고 있습니다..감사합니다.
그런데... 제가 사용하는 깜보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로 알려주시면 정말 감사하겠습니다.
그런데... 제가 사용하는 깜보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로 알려주시면 정말 감사하겠습니다.

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