验证在提交时调用的javascript函数中的reCaptcha。 (ASP经典)

时间:2016-07-01 08:55:13

标签: javascript asp-classic recaptcha

我需要帮助验证ReCaptcha在javascript验证中的响应,这是针对其他验证所做的,例如,字段为空等等。

在html function verify(f) {....}

onSubmit="return verify(this);"调用javascript函数<form name="form2" method="POST" action="alink.asp" onSubmit="return verify(this);">

Bellow是完整的js函数:

function verify(f) {
    var msg = '';
  var s = f.CKRoutingNumber.value;
  s = s.replace(/[^0-9]/gi, "");
  f.CKRoutingNumber.value = s;
  if (f.CustomerID.value == '') { msg = 'Please enter your Bricks R Us Customer ID.'; f.CustomerID.focus();  }
  else if (f.PurchaseOrderNumber.value == '') { msg = 'Please enter the purchase order number.'; f.PurchaseOrderNumber.focus();  }
  else if (f.Amount.value == '') { msg = 'Please enter the amount you wish to pay.'; f.Amount.focus();  }
  else if (f.CKBankName.value == '') { msg = 'Please enter a value into the Bank Name field.'; f.CKBankName.focus();  }
  else if (f.CKRoutingNumber.value == '') { msg = 'Please enter a value into the Routing Number field.'; f.CKRoutingNumber.focus();  }
  else if (s.length != 9) { msg = 'Please enter a valid nine-digit routing/transit number.'; f.CKRoutingNumber.focus();  }
  else if (f.CKAccountNumber.value == '') { msg = 'Please enter a value into the Account Number field.'; f.CKAccountNumber.focus();  }
  else if (f.CKNumber.value == '') { msg = 'Please enter a value into the Check Number field.'; f.CKNumber.focus();  }
  else if (f.BillingName.value == '') { msg = 'Please enter a value into the Full Name field.'; f.BillingName.focus();  }
  else if (f.BillingAddress.value == '') { msg = 'Please enter a value into the Billing Address field.'; f.BillingAddress.focus();  }
  else if (f.BillingCity.value == '') { msg = 'Please enter a value into the Billing City field.'; f.BillingCity.focus();  }
  else if (f.BillingState.value == '') { msg = 'Please select a value for the Billing State field.'; f.BillingState.focus();  }
  else if (f.BillingZIPCode.value == '') { msg = 'Please enter a value into the Billing ZIP Code field.'; f.BillingZIPCode.focus();  }
  else if (f.BillingPhone.value == '') { msg = 'Please enter a value into the Phone Number field.'; f.BillingPhone.focus();  }
  if (msg != '') {
    alert(msg);
    return false;
  }
}

上述功能与表格形成的页面相同。

Bellow是ASP经典代码,可以从reCaptcha获得响应。它也在同一页上

<%

Dim reresponse
reresponse= Request.form("g-recaptcha-response")

Dim VarString
VarString = _
          "?secret=6Lex3CMTAAAAAASVS5XnIq4Ya5ZGvEH_W70NU&amp;" & _
          "&response=" & reresponse  & _
  "&amp;&remoteip=" & Request.ServerVariables("REMOTE_ADDR") 

 Dim url
 url="https://www.google.com/recaptcha/api/siteverify" & VarString

  Dim objXmlHttp
  Set objXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")

  objXmlHttp.open "POST", url, False
  objXmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  objXmlHttp.send

  Dim ResponseString
  ResponseString = objXmlHttp.responseText
  Set objXmlHttp = Nothing

 If instr(ResponseString, "success" & chr(34) &": true")>0 then
 // do nothing
 else
 // Here I want to get this response message and validate it in the above javascript function.

 end if
%>

我很困惑,如何从asp获取响应并在verify(f) javascript函数中对其进行验证,这样我也会在提交按钮上收到重新打包需要和/或不正确的警告消息。 / p>

我的目的是在相同的通知javascript函数中验证reCaptcha响应,该函数在提交时调用并在alert()

中显示验证

请记住,asp代码和javascript代码都在同一页面中。

请询问您是否还需要我的表格HTML代码

1 个答案:

答案 0 :(得分:0)

您的verify()函数在本地运行并且执行某些输入值检查/警报是正常的,但无论如何您应该检查来自服务器端的浏览器的任何内容。如果您将ReCaptscha响应发送回该verify()函数,则会破坏您的安全性,因为您的用户可以简单地更改verify()函数...