【问题标题】:google recaptcha v2 verification expired but browser alert doesnt pop upgoogle recaptcha v2 验证已过期,但浏览器警报未弹出
【发布时间】:2020-05-06 03:52:52
【问题描述】:

我有一个带有验证码的工作表。当我加载网页并单击提交而不选中该框时,会显示警报(单击机器人),但是如果我让验证码过期并再次单击提交,则不会再弹出警报。以下代码是否有问题或有任何重写方法?

<script>
    window.onload = function() {
    var recaptcha = document.forms["form"]["g-recaptcha-response"];
    recaptcha.required = true;
    recaptcha.oninvalid = function(e) {     
        alert("Please click on i am not a robot");
        }
    }
</script>

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

<div class="g-recaptcha" data-sitekey="xxx" data-callback="recaptcha"></div>

请看一下我的服务器端 php。这几天我多次尝试添加数据过期回调,但都无法成功。

$recaptcha_secret = "xxx";
        $response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secret."&response=".$_POST['g-recaptcha-response']);
        $response = json_decode($response, true);
        if($response["success"] === true) {

                mail($to, $subject, $body, "From:" . $email);

        }
        else
        {

        return false;

        }
        echo 'success';
    }

【问题讨论】:

    标签: javascript php


    【解决方案1】:

    Re-captcha 提供callback handlers 当用户选择复选框和检查令牌过期时。例如

     <div class="g-recaptcha" id="headerCaptcha" data-callback="recaptchaCallbackHeader" data-expired-callback="recaptchaExpiryHeader" data-sitekey="xxx"></div>
     // There should be expiry handler like 
    function recaptchaExpiryHeader(){
        alert('You should have to check captcah again as it is expired');
    }  
    

    更多关于the same

    【讨论】:

    • 感谢您的回复。我已经检查了你的其他帖子。无论我做什么,我都无法显示过期警报。你能告诉我如何解决这个问题吗?感谢您的时间。 @manikant
    猜你喜欢
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 2018-03-21
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 2017-08-06
    相关资源
    最近更新 更多