我需要帮助才能实现Google Recaptcha 2.0的答案。
我在发送表单后尝试了几种方法来恢复响应,但不是consigui得到答案为真。
按照我正在尝试的示例:
recaptcha_secret = "example45454sasa"
Set oJSON = New aspJSON
jsonstring = "https://www.google.com/recaptcha/api/siteverify?secret=" & recaptcha_secret & "&response=" & request.form("g-recaptcha-response") & ""
'Load JSON string
oJSON.loadJSON("" & jsonstring & "")
'Get single value
Response.Write oJSON.data("success") & ""
第二个exmeplae我使用aspJSON1.17.asp库:
"""
上面两个例子返回False或No。
如何实施检查Recaptcha是否已标记的方法?
感谢您的关注!
答案 0 :(得分:12)
我不知道你如何发送请求。
无论如何,下面是我的测试网站的网站密钥的样本。当然,您应该提供自己的“密钥”和“data-sitekey”
实时样本:http://1click.lv/googlecaptcha.asp
文件名:GoogleCaptcha.asp
<field name="name" attrs="{'invisible': [('condition', '=', False)]}"/>
<field name="name2" attrs="{'readonly': [('condition', '=', False)]}"/>
<field name="name3" attrs="{'required': [('condition', '=', False)]}"/>
答案 1 :(得分:0)
对于Zam,在我的例子中,屏幕上显示的响应是:
Response: { "success": false, "error-codes": [ "invalid-input-secret" ] }
我相信它应该出现&#34; True&#34;因为我正确地回答了这个问题。
您可以测试:bit.ly/1R1cbEs
答案 2 :(得分:0)
在这里,它是一个但是如果是js + vb以来的屠杀,但是它正在做这个工作:
<script language=JavaScript RUNAT=SERVER src="json2.min.js"></script>
<script language=JavaScript RUNAT=SERVER >
function gResult( jobj ){
if ( JSON.parse( jobj ).success == true ){ return true }else{ return false }
}
</script>
<%
dim secret, objXmlHttp, VarString
secret = "yoursekretcodehere"
VarString = "secret=" & secret &_
"&response=" & Request.Form("g-recaptcha-response") &_
"&remoteip=" & Request.ServerVariables("REMOTE_ADDR")
Set objXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")
if isNull(objXmlHttp) then
Set objXmlHttp = Server.CreateObject("Microsoft.XMLHTTP")
end if
objXmlHttp.open "POST", "https://www.google.com/recaptcha/api/siteverify?" & VarString , False
objXmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objXmlHttp.send
Set objXmlHttp = Nothing
response.write gResult( objXmlHttp.responseText )
好的,现在。 一些解释:首先,使用msxmlhttp lib的给定google链接会将我们带回&#34; invalid-site-private-key&#34;,正如人们在browser中看到的那样,我不会确定原因,但它总是抛出我的请求与此错误。
所以我把它改成了/siteverify,我们得到了一些json错误。 但是如果我们发布正确的值,用VarString构造(请注意&#34; g-recaptcha-response&#34;是正确的处理程序),那么它将传回一个json,结果在其中,但是当然VB脚本不是用这样的功能构建的,所以我们需要做一些JS witchery。 首先,获取json2.js,只需google它,然后将其包含在您的src(href或本地副本)和一个简单的js函数中,以便从G返回正确的响应。
然后在最后一行我刚刚打印出结果,但是人们可以随心所欲地做任何事情。
答案 3 :(得分:0)
result = (objXML.responseText)
Set oJSON = New aspJSON
oJSON.loadJSON(result)
Set objXML = Nothing
success = oJSON.data("success")
if success = "True" then
action = "go to next page"
else
action = ""
end if
现在使用的代码是:
<%@LANGUAGE=VBSCRIPT%>
<%
Option Explicit
%>
<html>
<head>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<!-- #include file="aspJSON.asp"-->
<%
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
Dim recaptcha_secret, sendstring, objXML
' Secret key
recaptcha_secret = "XXXCCCXXXX"
sendstring = "https://www.google.com/recaptcha/api/siteverify?onload=onloadCallback&render=explicit&secret=" & recaptcha_secret & "&response=" & Request.form("g-recaptcha-response")
Set objXML = Server.CreateObject("MSXML2.ServerXMLHTTP")
objXML.Open "GET", sendstring, False
objXML.Send
dim result, oJSON, success, action, errorCapatcha, errorMsg
result = (objXML.responseText)
Set oJSON = New aspJSON
oJSON.loadJSON(result)
Set objXML = Nothing
success = oJSON.data("success")
if success = "True" then
action = "go to next page"
else
action = "do nothing"
end if
END If
%>
<form method="post" action="">
<!-- Site key -->
<div class="g-recaptcha" data-sitekey="XXXXXXXXX"></div>
<br />
<input type="submit" value="Try">
</form>
</body>