2014-03-31 149 views
0

我有一个应用程序表单,我需要使用jquery验证验证码。如果输入的验证码不正确,那么显示的提示框请再次输入验证码输入的验证码是错误的。我怎样才能使用jquery?请帮帮我。我是jquery的新手。使用jquery验证验证码

下面是代码:从https://code.google.com/p/recaptcha4j/downloads/list

<%@ page import="net.tanesha.recaptcha.ReCaptcha" %> 
<%@ page import="net.tanesha.recaptcha.ReCaptchaFactory" %> 

<form action="." method="post"> 
    <div class="loginbox"> 
      <c:set var="PUBLIC_KEY" scope="page" value="${requestScope.properties.get('PUBLIC_KEY')}" /> 
      <c:set var="PRIVATE_KEY" scope="page" value="${requestScope.properties.get('PRIVATE_KEY')}" /> 

      <% ReCaptcha c = ReCaptchaFactory.newSecureReCaptcha((String)pageContext.getAttribute("PUBLIC_KEY"), (String)pageContext.getAttribute("PRIVATE_KEY"), false); 
       out.print(c.createRecaptchaHtml("errorMessage","blackglass", 2)); %>       
      <button type="submit">Submit</button>   
    </div> 
</form> 

$(function() { 
    $("#XISubmit").click(function(){ 
     event.preventDefault() 
     val=$('#vercode').val() 
     $.ajax({ 
      type:"post", 
      url:"verify-captcha.php", 
      data:{'code':val}, 
      success:function(data){ 
       if(data=='false'){ 
        alert('Re-enter Captcha, You Entered wrong captcha code') 
        $("#cap").html("<img src='captcha_image.php'>"); } 
       else{ 
        document.getElementById("XIForm").submit(); 
       } 
      } 

     });  
    }); 
}); 

      document.getElementById("XIForm").submit(); 

       }); 
Html page : 

<label>Security Validation</label>  

<span><img src="captcha.php"></span><input type="text" name="vercode" id="vercode" size="10" style="margin-top: -1px; float: left; width: 115px; margin-right: 12px;"></li><div id="msg"></div> 
captcha.php 

<?php 
session_start(); 
$ranStr = md5(microtime()); 
$ranStr = substr($ranStr, 0, 6); 
$_SESSION['cap_code'] = $ranStr; 
$newImage = imagecreatefromjpeg("cap_bg.jpg"); 
$txtColor = imagecolorallocate($newImage, 0, 0, 0); 
imagestring($newImage, 5, 5, 5, $ranStr, $txtColor); 
header("Content-type: image/jpeg"); 
imagejpeg($newImage); 
?> 
verify-captcha.php 

<?php 
session_start(); 
if ($_POST["code"] != $_SESSION["cap_code"] || $_SESSION["cap_code"]=='') { 
echo 'false'; 
}else{ 
echo 'true';} 
+1

它使用jQuery,你正在尝试做的,因为那么就可以绕过所以这将是无用的不做......此验证必须通过目标资源进行 –

+0

现在发生了什么 –

+0

@ArunPJohny,你的意思是,可以修改JS文件吗? –

回答

0

下载recaptcha.jar保持公钥和私钥在* .properties文件(如果没有创建一个),并使用$ {requestScope.properties.get('PUBLIC_KEY')}获取PUBLIC和PRIVATE KEY。

现在ajax以下面的参数调用2。并验证后端的recaptchaResponseField和recaptchaChallengeField。

recaptchaResponseField = $(“input [name = recaptcha_response_field]”)。val(); ()输入[name = recaptcha_challenge_field]“)。val();

var ajax=$.ajax({ 
      url: API.get_api_url('your_auth_url'), 
      data: {recaptchaResponseField:recaptchaResponseField,recaptchaChallengeField:recaptchaChallengeField}, 
      type: 'POST', 
      success: function(data, status, xhr){ 
       if(data){ 
        if(data.statusCode == 0){ 
         log("if successfully authenticated.. send to home page"); 
        } 
       } 
      } 
     }); 

在java(后端)。使用下面来验证再验证码

public boolean isValidCapctha(HttpServletRequest request, String recaptchaResponseField, String recaptchaChallengeField) { 
     String remoteAddr = request.getRemoteAddr(); 
     ReCaptchaImpl reCaptcha = new ReCaptchaImpl(); 
     reCaptcha.setPrivateKey(properties.getProperty("PRIVATE_KEY")); 
     ReCaptchaResponse reCaptchaResponse = reCaptcha.checkAnswer(remoteAddr, recaptchaChallengeField, recaptchaResponseField); 
     return reCaptchaResponse.isValid();  
    }