프로그래밍

HumanChecker를 만들다.

panpro 2010. 7. 8. 20:39
이름이 이게 맞는지 모르겠는데, 회원가입하거나 할 때 로봇이 가입하는건 아닌지 확인하기 위해 문자나 숫자를 써 놓고 로봇이면 썩 물러가고 사람이면 입력해봐! 하는 체커가 있다. 오늘 그거 맹글었다.


팀장님 홈페이지는 아무나 글을 쓸 수 있는 구조인데, 자꾸 누가 비아그라 사라고 스팸글을 올려서(10분 간격으로 올라오는 걸 보면 분명 로봇이다.) 팀장님이 계속 지우시다가 짜증나서 함 만들어 보라고 하신거다.

꽤 간단하게, 금방 만들었다. 하긴 뭐 하는 게 없다.

이 플래시는 외부(자바스크립트)와 연동하기 위한 딱 하나의 함수를 가지고 있다.

int getResult() 함수가 그것.

만약 제시된 문자와 사용자 입력이 같으면 1을 리턴하고, 그렇지 않으면 0을 리턴한다. ㅋ. 초간단.
예를 들면 다음과 같이 쓸 수 있다. (실제 사용 예)
// 사람이 직접 입력하는 글인지 여부 체크
var nResult = document.fwrite.HumanChecker.getResult();
if (1 == nResult)
{
    document.fwrite.isHuman.value = "PANBOY IS SO COOL";
}
else
{
    alert("이미지의 글자를 정확히 입력해 주세요");        
    return false;
}   

저 플래시를 화면에 표시할 때는 아래와 같이 했다.

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="HumanChecker" width="100%" height="120"
                 codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
                 <param name="movie" value="HumanChecker.swf" />
                 <param name="quality" value="high" />
                 <param name="bgcolor" value="#869ca7" />
                 <param name="allowScriptAccess" value="sameDomain" />
                 <embed src="HumanChecker.swf" quality="high" bgcolor="#869ca7"
                  width="100%" height="120" name="HumanChecker" align="middle"
                  play="true"
                  loop="false"
                  quality="high"
                  allowScriptAccess="sameDomain"
                  type="application/x-shockwave-flash"
                  pluginspage="http://www.adobe.com/go/getflashplayer">
                 </embed>
               </object>

30분이 넘었는데도 더 이상 스팸글이 안올라오는 걸 보면 이제 문제가 해결된 것 같다.

다운로드 :