제로보드에 관한 팁이나 강의를 소개하는 게시판입니다.
팁공유라고 해서 아주 특별하거나 기발한거 아니어도 됩니다.
자신이 제로보드를 사용하면서 생긴 자신만의 노하우나 아주 사소한 팁이어도 좋습니다.
자신에겐 아무것도 아니더라도 다른분들께는 분명 중요하고 소중한 팁이 될수 있을겁니다.
글수 4,527

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