【问题标题】:Switching Google reCaptcha Version 1 from 2从 2 切换 Google reCaptcha 版本 1
【发布时间】:2015-10-25 10:20:29
【问题描述】:

我已经成功设计并实施了 Google reCaptcha 第 2 版,但现在我的经理希望它是第 1 版,并且要输入和验证数字。有没有办法从以后切换到以前,即从 2 到 1。我正在使用以下库进行 reCaptcha:

 <script src='https://www.google.com/recaptcha/api.js'></script>

更新..

要在表单中实现验证码,我使用以下 HTML..

 <form class="contact_form" action="#" method="post" name="contact_form">
                <div class="frm_row">
                    <label id="lblmsg" />
                    <div class="clear">
                    </div>
                </div>
                <div class="g-recaptcha" data-sitekey="6Lduiw8TAAAAAOZRYAWFUHgFw9_ny5K4-Ti94cY9"></div>

                <div class="login-b">
                    <span class="button-l">
                      <input type="button" id="Captcha" name="Submit" value="Submit" />
                    </span>
                    <div class="clear"> </div>
                </div>
            </form>

因为我需要在上面的表单中获取验证码以验证并在按钮单击时获得响应,但现在我使用的是&lt;script src="http://www.google.com/recaptcha/api/challenge?k=6Lduiw8TAAAAAOZRYAWFUHgFw9_ny5K4-Ti94cY9"&gt;&lt;/script&gt;,所以没有在表单中获取验证码..请帮助我得到那个。 .另外这里是在服务器端代码发送请求的 Jquery Ajax 代码..

  $(document).ready(function () {

        alert("hii1");

        $('#Captcha').click(function () {

            alert("Hii2");

            if ($("#g-recaptcha-response").val()) {

                alert("Hii3");

                var responseValue = $("#g-recaptcha-response").val();

                alert(responseValue);

                $.ajax({
                    type: 'POST',
                    url: 'http://localhost:64132/ValidateCaptcha',
                    data: JSON.stringify({ "CaptchaResponse": responseValue }),
                    contentType: "application/json; charset=utf-8",
                    dataType: 'json',  // Set response datatype as JSON
                    success: function (data) {
                        console.log(data);
                        if (data = true) {
                            $("#lblmsg").text("Validation Success!!");
                        } else {

                            $("#lblmsg").text("Oops!! Validation Failed!! Please Try Again");
                        }
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        alert("Error");
                    }
                });
            }

            });
    });

请帮助我..谢谢..

【问题讨论】:

  • 嗨@Lara 你试过https://www.google.com/recaptcha/api.js?fallback=true吗?
  • @jhmt 我尝试了你的建议,但我再次获得图像验证码。我没有要求的字母数字验证码..
  • 好的,@Lara 然后试试&lt;script src="http://www.google.com/recaptcha/api/challenge?k={Your Site Key}"&gt;&lt;/script&gt;
  • @jhmt 非常感谢..它似乎在第一次尝试..让我实现它..我会告诉你,之后你可以回答这个问题,我会把它标记为回答..谢谢..
  • 谢谢,我不确定您的后端语言是什么,但如果您被允许使用此页面上的插件 (code.google.com/p/recaptcha/downloads/list),它将使实施更容易。跨度>

标签: captcha recaptcha


【解决方案1】:

您必须在服务器端上的“http://www.google.com/recaptcha/api/verify”处验证 reCaptcha。 这个的参数是:

privatekey: Your Private Key
remoteip: User's IP Address
challenge: Value of input[name=recaptcha_response_field]
response: Value of input[name=recaptcha_challenge_field]

因此,您必须将它们发布在您的服务器端方法上,如下所示:

cshtml文件:

var recaptchaResponseField=$("input[name=recaptcha_response_field]").val();
var recaptchaChallengeField=$("input[name=recaptcha_challenge_field]").val();

// ajax block
$.ajax({
    url: '/api/VerifyReCaptcha/',   // your Server-side method
    type: 'POST',
    data: {
        ipAddress: '@Request.ServerVariables["REMOTE_ADDR"]',
        challengeField: recaptchaChallengeField,
        responseField: recaptchaResponseField
    },
    dataType: 'text',
    success: function (data) {
        // Do something
    },

由于您使用的是 .NET,因此 C# 代码示例如下:

cs 文件:

using System.Net;
using System.Collections.Specialized;

[HttpPost]
public bool VerifyReCaptcha(string ipAddress, string challengeField, string responseField)
{
    string result = "";
    using (WebClient client = new WebClient())
    {
        byte[] response =
        client.UploadValues("http://www.google.com/recaptcha/api/verify", new NameValueCollection()
        {
           { "privatekey", "{Your private key}" },
           { "remoteip", ipAddress },
           { "challenge", challengeField },
           { "response", responseField },
        });

        result = System.Text.Encoding.UTF8.GetString(response);
    }

    return result.StartsWith("true");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 2018-04-27
    • 2020-06-12
    • 1970-01-01
    相关资源
    最近更新 更多