홈>컴퓨터이야기
logo_01.gif


TOTAL ARTICLE : 35, TOTAL PAGE : 1 / 2
구분 웹일반 | 태그-소스 | 제로보드 | 그누보드 |
제로보드 : 제로보드 스팸 차단하기
 오예    | 2007·05·03 18:56 | HIT : 3,580 | VOTE : 68
아래소스를 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폴더를 만들어 줍니다..(폴더 권한설정 707)

이제 남은것은 테스트




특정게시판에만 적용하려면..
write_ok.php에서..

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

이런식으로 하시면 됩니다..

또한..

반대로.. 특정 게시판만 제외하고 적용되게하려면..

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

하시면 해당 아이디만 제외하고 적용됩니다..^^;








// 회원가입할 때 로봇글 제한하기

금방 적용해 봤습니다. 오류가 있을 수도 있겠죠. 저는 없네요.
이상 있으면 말씀해 주세요.

/// member_join.php

맨 위에

<?
// 향상된 난수발생,생성.
mt_srand(hexdec(substr(md5(microtime()), -8)) & 0x7fffffff);
$rand_codei = md5(mt_rand(1000000, 9999999));
?>

action=member_join_ok.php 를 찾아서

action=member_join_ok.php<? echo "?anti_robotCode=".$rand_codei; ?>
로 변경

적당한 위치(저는 회원가입 아이콘 위에)

<input type=image border=0 src=images/button_join.gif>  
위에 아래처럼

<font color=red><b>코드입력</b></font>: <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;">
<input type=image border=0 src=images/button_join.gif>  


/// member_join_ok.php


if($member[no]&&!$mode) Error("이미 가입이 되어 있습니다.","window.close");
아래에

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





// 삭제


mysql_close($connect); 를 찾아서 그 위에

// 코드파일 자동삭제.
$anti_codedir = './anti_code/';
$dir = opendir($anti_codedir);
while((false!==($file=readdir($dir))))
if($file!="." and $file !="..") @unlink($anti_codedir.'/'.$file);
closedir($dir);
를 넣으세요.
샬롬~
난! 자유인...
  
35 제로보드   mysql 4.1에서 제로보드의 호환성 문제 해결  오예 16·01·15 327 25
34 제로보드   제로보드 관리자 비번 잊어버렸을때  오예 11·06·28 1825 49
33 제로보드   최근게시물에 비밀글도 출력하기  오예 09·10·21 2944 215
32 제로보드   제로보드 2009.9.22 보안 취약점 패치  오예 09·09·29 4829 291
31 제로보드   지엠스팸프리(ZmSpamFree)  오예 09·08·30 2772 187
30 제로보드   제로보드 관리자계정 접속이 안될때  오예 09·07·12 2628 151
29 제로보드   갤러리에 한글이름 적용하기  오예 09·06·29 3627 217
28 제로보드   DQ Revolution 1.8.p9 최근갤러리에 썸네일 불러오기  오예 09·03·20 3659 149
27 제로보드   제로보드 스팸방지기능(ZM_Crypt 2.0)  오예 09·02·06 3885 191
26 제로보드   제로보드 서버 이전 방법  오예 08·09·19 3758 230
25 제로보드   제로보드 스팸광고게시물,덧글 자동등록 방지 ZM_Crypt 2.0  오예 08·08·19 3034 181
24 제로보드   미니위니 에디터 FAQ  오예 07·10·31 5516 121
제로보드   제로보드 스팸 차단하기  오예 07·05·03 3580 68
22 제로보드   새계정 이사할때, 그대로 옮기기 - DB백업,복구, data백업,복구 방법, 권한설정  오예 07·03·10 1981 67
21 제로보드   최근게시물에 답글과 비밀글 표시하기  오예 06·12·26 2407 64
20 제로보드   최고 관리자 아이디, 비밀번호 잃어버렸을때  오예 06·08·21 1909 75
19 제로보드   그림 파일명에 한글이 포함될 경우 영문자, 숫자로 이름 자동 변경하기  오예 06·07·03 2100 73
18 제로보드   제로보드 게시물 순서 바꾸기  오예 06·06·19 1905 74
17 제로보드   최근 게시물을 나타내는 원리와 방법  오예 06·05·27 1798 77
16 제로보드   특정 회원사진 출력 안되는 문제  오예 06·05·01 1663 58
12
Copyright 1999-2019 Zeroboard / skin by GGAMBO