验证码不在jquery端进行验证

如何解决验证码不在jquery端进行验证

首先,请确保您已包含必要的JavaScript资源以正确呈现reCAPTCHA小部件,如下所示:

<html>
  <head>
    <title>reCAPTCHA demo: Simple page</title>
     <script src="https://www.google.com/recaptcha/api.js" async defer></script>
  </head>
  <body>
    <form action="?" method="POST">
      <div class="g-recaptcha" data-sitekey="your_site_key"></div>
      <br/>
      <input type="submit" value="Submit">
    </form>
  </body>
</html>

这是参考:

现在是用户的响应。用户验证码质询的响应可以三种方式获取。可以是

  • 提交表单中的POST参数
  • -在用户完成验证码输入后将提供响应。
  • 传递给render方法的config对象中指定的回调函数的字符串参数。

这是参考:

出于您的目的,请使用 获取用户的响应。

作为旁注,请使用 要求最终用户再次使用reCAPTCHA进行验证。从手册中:

如果您的网站使用AJAX请求执行服务器端验证,则应该只验证一次用户的reCAPTCHA响应令牌( )。如果使用特定令牌进行了验证尝试,则无法再次使用它。您将需要调用 来要求最终用户再次使用reCAPTCHA进行验证。

这是您的 代码:

<form method = "POST" name = "register" id = "register" class="m-t" role="form" action="login.html">

    <div class="form-group">
        <input type="text" name = "fname" id = "fname" class="form-control" placeholder="First Name" required="">
    </div>
    <div class="form-group">
        <input type="text" name = "lname" id = "lname" class="form-control" placeholder="Last Name" required="">
    </div>
    <div class="form-group">
        <input type="email" name = "email" id = "email" class="form-control" placeholder="Email" required="">
    </div>
    <div class="form-group">
        <input type="password" name = "password" id = "password" class="form-control" placeholder="Password" required="">
    </div>
    <div class="form-group">
        <input type="mobile" name = "mobile" id = "mobile" class="form-control" placeholder="Mobile No" required="">
    </div>
    <div  class="form-group" id="recaptcha_widget">
        <div class="required">
            <div class="g-recaptcha" data-sitekey="XXXXXX_SITE-KEY_XXXXXXX"></div>
            <!-- End Thumbnail-->
        </div>
    </div>
    <button type="submit" name = "submit" id = "submit" class="btn btn-primary block full-width m-b">Register</button>

</form>
<p class="text-muted text-center"><small>Already have an account?</small></p>
<a class="btn btn-sm btn-white btn-block" href="login.html">Login</a>

您的 应该是这样的:

$(document).ready(function(){
    //execute's the function on click
    $("#submit").click(function(e){

        var recaptchaResponse = grecaptcha.getResponse();

        var status = $('form')[0].checkValidity();
        if(status){
            /*jquery to call the url requested 
            and parse the data in json*/
            $.ajax({
                url: "process.php",
                type: "POST",
                data: {
                    fname: $("#fname").val(),
                    lname: $("#lname").val(),
                    email: $("#email").val(),
                    password: $("#password").val(),
                    mobile: $("#mobile").val(),
                    recaptchaResponse: recaptchaResponse
                },
                async: false,
                dataType: "JSON",
                /*Give out the alert box
                to display the results*/ 
                success: function (json){
                    if(json.error){
                        alert(json.error_msg);
                        grecaptcha.reset();
                        e.preventDefault();
                    }else{
                        alert("Registeration successful!",json.user.email);
                        $('#register').submit();
                    }
                },
                error: function(jqXHR, textStatus, errorThrown){
                    alert(errorThrown);
                }
            });
        }

    });
});

最后,您的 应该是这样的:

<?php

    // your code

    //your site secret key
    $secret = 'XXXXXXX_Secret-key_XXXXXXX';

    if(isset($_POST['recaptchaResponse']) && !empty($_POST['recaptchaResponse'])){
        //get verified response data
        $param = "https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$_POST['recaptchaResponse'];
        $verifyResponse = file_get_contents($param);
        $responseData = json_decode($verifyResponse);

        if($responseData->success){
            // success
        }else{
            // failure
        }

    }

    // your code

?>

解决方法

我正在使用php来验证google REcaptcha
..就后端验证而言,如果验证码未提交并且完成的用户存储在数据库中,但是当我将其与jquery连接时出现主要问题,则会给出错误提示。
..问题是,即使验证码在后端经过验证,每次也总是发出错误“您缺少的验证码”,请帮帮我,如果有错,请原谅我.. !!

这里gose .php 文件

                   <?php

        require_once 'DB_Functions.php';
        $db = new DB_Functions();

        // json response array
        $response = array("error" => false);
        if (!empty($_POST['fname']) && !empty($_POST['lname']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['mobile'])){
                /*
                if required include seperate validation
                */
                // receiving the post params
                $fname = trim($_POST['fname']);
                $lname = trim($_POST['lname']);
                $email = trim($_POST['email']);
                $password = $_POST['password'];
                $mobile = trim($_POST['mobile']);

                /*
                validation process
                starts from here
                */
                // validate your email address
                if(filter_var($email,FILTER_VALIDATE_EMAIL)) {
                        //validate your password
                        if(strlen($password) >= 6){
                                //validate your mobile
                                if(strlen($mobile) == 12){
                                        //validate captcha
                                        //your site secret key
                                        $secret = 'XXXX_secret-key_XXXX';

                                        if(isset($_POST['recaptchaResponse']) && !empty($_POST['recaptchaResponse'])){
                                                //get verified response data

                                                $param = "https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$_POST['recaptchaResponse'];
                                                $verifyResponse = file_get_contents($param);
                                                $responseData = json_decode($verifyResponse);

                                                if($responseData->success){
                                                        //Check for valid email address
                                                        if ($db->isUserExisted($email)) {
                                                                // user already existed
                                                                $response["error"] = true;
                                                                $response["error_msg"] = "User already existed with " . $email;
                                                                echo json_encode($response);
                                                        }elseif($db->isMobileNumberExisted($mobile)) {
                                                                        //user already existed
                                                                        $response["error"] = true;
                                                                        $response["error_msg"] = "user already existed with" . $mobile;
                                                                        echo json_encode($response);
                                                        }else{  
                                                                // create a new user
                                                                $user = $db->storeUser($fname,$lname,$email,$password,$mobile);
                                                                if ($user) {
                                                                        // user stored successfully
                                                                        $response["error"] = false;
                                                                        $response["uid"] = $user["id"];
                                                                        $response["user"]["fname"] = $user["fname"];
                                                                        $response["user"]["lname"] = $user["lname"];
                                                                        $response["user"]["email"] = $user["email"];
                                                                        $response["user"]["created_at"] = $user["created_at"];
                                                                        $response["user"]["updated_at"] = $user["updated_at"];
                                                                        echo json_encode($response);
                                                                } else {
                                                                        // user failed to store
                                                                        $response["error"] = true;
                                                                        $response["error_msg"] = "Unknown error occurred in registration!";
                                                                        echo json_encode($response);
                                                                }
                                                        }
                                                }else{
                                                        //failed to submit captcha
                                                        $response["error"] = true;
                                                        $response["error_msg"] = "Sorry this application is not for bots";
                                                        echo json_encode($response);
                                                }
                                        }else{
                                                //failed to submit captcha
                                                $response["error"] = true;
                                                $response["error_msg"] = "your missing captcha";
                                                echo json_encode($response);
                                        }
                                }else{
                                        //invalid mobile number
                                        $response["error"] = true;
                                        $response["error_msg"] = "Mobile number is invalid!";
                                        echo json_encode($response);
                                }
                        }else{
                                //min of 6-charecters
                                $response["error"] = true;
                                $response["error_msg"] = "password must be of atleast 6-characters!";
                                echo json_encode($response);
                        }
                }else{
                        // invalid email address
                        $response["error"] = true;
                        $response["error_msg"] = "invalid email address";
                        echo json_encode($response);
                }
        }else{
                //missing the required fields
                $response["error"] = true;
                $response["error_msg"] = "Please fill all the required parameters!";
                echo json_encode($response);
        }

?>

这是引导中的gose .html 文件

   <!DOCTYPE html>
<html>

<head>

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">

    <title>MiiSKy | Register</title>
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script type="text/javascript" src = "register.js"></script>
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <link href="font-awesome/css/font-awesome.css" rel="stylesheet">
    <link href="css/plugins/iCheck/custom.css" rel="stylesheet">
    <link href="css/animate.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">
    <script src='https://www.google.com/recaptcha/api.js'></script>


</head>

<body class="gray-bg">

    <div class="middle-box text-center loginscreen   animated fadeInDown">
        <div>
            <div>

                <!--<h3 class="logo-name">MiiSky</h3>-->
                <img src="img/landing/mii-logo.png">
            </div>
            <!--<h3>Register to MiiSky</h3>-->
            <p>Create account to see it in action.</p>
            <form method = "POST" name = "register" id = "register" class="m-t" role="form" action="login.html">

                <div class="form-group">
                    <input type="text" name = "fname" id = "fname" class="form-control" placeholder="First Name" required="">
                </div>
                <div class="form-group">
                    <input type="text" name = "lname" id = "lname" class="form-control" placeholder="Last Name" required="">
                </div>
                <div class="form-group">
                    <input type="email" name = "email" id = "email" class="form-control" placeholder="Email" required="">
                </div>
                <div class="form-group">
                    <input type="password" name = "password" id = "password" class="form-control" placeholder="Password" required="">
                </div>
                <div class="form-group">
                    <input type="mobile" name = "mobile" id = "mobile" class="form-control" placeholder="Mobile No" required="">
                </div>
                <div  class="form-group" id="recaptcha_widget">
                                                    <div class="required">
                                                      <div class="g-recaptcha" data-sitekey="XXXXX_site-key_XXXXXX"></div>
                                                   <!-- End Thumbnail-->
                                                  </div>
                </div>
                <button type="submit" name = "submit" id = "submit" class="btn btn-primary block full-width m-b">Register</button>

                <p class="text-muted text-center"><small>Already have an account?</small></p>
                <a class="btn btn-sm btn-white btn-block" href="login.html">Login</a>
            </form>

这里是主要的 .js 文件

          $(document).ready(function(){
    //execute's the function on click
    $("#submit").click(function(e){

        var recaptchaResponse = grecaptcha.getResponse();

        var status = $('form')[0].checkValidity();
        if(status){
            /*jquery to call the url requested 
            and parse the data in json*/
            $.ajax({
                url: "process.php",type: "POST",data: {
                    fname: $("#fname").val(),lname: $("#lname").val(),email: $("#email").val(),password: $("#password").val(),mobile: $("#mobile").val(),recaptchaResponse: recaptchaResponse
                },async: false,dataType: "JSON",/*Give out the alert box
                to display the results*/ 
                success: function (json){
                    if(json.error){
                        alert(json.error_msg);
                        grecaptcha.reset();
                        e.preventDefault();
                    }else{
                        alert("Registeration successful!",json.user.email);
                        $('#register').submit();
                    }
                },error: function(jqXHR,textStatus,errorThrown){
                    alert(errorThrown);
                }
            });
        }

    });
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-