2012-01-24 2 views
-4

나는 간단한 Javascript Captcha를 만들었지 만 현재 값은 무작위로 생성되지만 배열에서 값을 가져오고 싶습니다. (이 두 배열을 무작위로 지정하고 싶습니다.) plz 내 코드를 확인하고 싶습니다. 이것은 종속성이없는 간단한 자바 스크립트를 사용하여 plz가 validate() 함수를 수정합니다.임의의 배열을 사용하는 간단한 JavaScript captcha

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 

<script type="text/javascript"> 

function myCaptcha() { 
var leftnum =[5, 10, 15, 20]; 
var rightnum =[2, 4, 6, 8]; 

var leftnum = Math.floor(Math.random()*11); 
var rightnum = Math.floor(Math.random()*11); 


var tolnum = leftnum + rightnum ; 

document.getElementById("sh").innerHTML = leftnum + " + " + rightnum; 

} 

function validate() { 
    var captchanow = document.getElementById("captcha"); 

    if (captchanow != "") { 
    alert("Please enter a captcha");  
     return false; 
    } 
    else if(captchanow == tolnum) { 
     alert("wrong captcha entered"); 
     return false; 
    } 
    else { 
     form.submit 
    } 
    return true; 

} 

</script> 
</head> 

<body onload="myCaptcha()"> 

<form action="" method="post" onsubmit="return false;"> 
    <p>Captcha : 
    <input name="captcha" type="text" id="captcha" value="" /> 

    <label id="sh" value=""></label></p> 
    <p> 
    <input type="submit" name="button" id="button" value="Submit" onclick="validate()"/> 
    </p> 
</form> 
</body> 
</html> 
+6

이것은 " plz _ [sic] _ 내 코드 수정 "웹 사이트. –

+0

그래서 어떤 대답이 없습니까? – user1167075

답변

1

는 나는 완전히 기계로 읽을 수 없습니다하는 것입니다 보안 문자의 포인트를 제거합니다 로 자바 스크립트 보안 문자를 사용 강력히을 억제.

대신 reCAPTCHA과 같은 것으로 전환하는 것이 좋습니다.

JavaScript CAPTCHA를 사용하면 사용자를 화나게하고 스팸봇이 눈을 감고 [비 유적으로] 해결할 수 있습니다.

+0

네,하지만 내 질문이 해결되지 않으면, 난 내 배열 변수에서 랜든 번호를 얻고 싶습니다. 이것을 질문으로 생각하십시오. – user1167075

0

우선 Javascript CAPTCHA는 완전히 무의미합니다. 멈추려는 봇은 페이지에서 Javascript를 실행하지 않습니다.

var leftnums =[5, 10, 15, 20]; 
var rightnums =[2, 4, 6, 8]; 

var leftnum = leftnums[Math.floor(Math.random() * leftnums.length)]; 
var rightnum = rightnums[Math.floor(Math.random() * rightnums.length)]; 

는 입력 필드의 값을 얻으려면, value 속성을 사용 : 두 숫자가 다를 경우

var captchanow = document.getElementById("captcha").value; 

확인하려면 배열에서 항목을 선택하는 방법

은 어쨌든입니다 != 연산자를 사용하고 문자열을 정수 값으로 구문 분석하십시오.

else if(parseInt(captchanow,10) != tolnum) { 
+0

감사합니다.이 "leftnums [Math.floor (Math.random() * leftnums.length)]를 찾지 못했습니다." 아무 데나 내가 체크하자. – user1167075

+0

어디서나 자신의 개인 변수 이름을 사용하여 어디에서나 찾을 수 있습니다. 기본 원칙에서 추론 할 수 있습니다. –

+0

@ user1167075 : 혼란을 가져 주어서 죄송합니다. "이것은 당신의 모습입니다 ..."나는 현재 코드에 그 코드가 포함되어 있다는 의미는 아니며, 코드를 사용하여 코드를 사용할 수 있음을 의미합니다. – Guffa