如何在使用联系表单7时在wordpress中捕获分数recaptcha v3分数?

问题描述 投票:0回答:2

请帮助在 worpdress 中捕获 recatcha v3 分数。

我的分数低于对象,但如何从该对象中获取

$submission = WPCF7_Submission::get_instance();

WPCF7_Submission Object
(
[pocket:protected] => Array
        (
            [recaptcha] => Array
                (
                    [version] => 3.0
                    [threshold] => 0.5
                    [response] => Array
                        (
                            [success] => 1
                            [challenge_ts] => 2023-06-22T10:30:41Z
                            [hostname] => staging.bonoboz.in
                            [score] => 0.9
                            [action] => contactform
                        )

                )

        )

)
php wordpress contact-form-7
2个回答
2
投票

WPCF7_Submission 对象包含通过表单提交的数据。 recaptcha 数组包含 reCAPTCHA 数据,其中的响应数组包含分数字段。

您可以像这样访问此分数:

$submission = WPCF7_Submission::get_instance();
if ($submission) {
    $recaptcha = $submission->get_meta('recaptcha');
    if ($recaptcha) {
        $score = $recaptcha['response']['score'];
        // do something with $score
    }
}

在此代码中,

$submission->get_meta('recaptcha')
从提交中检索验证码数据。然后,
$recaptcha['response']['score']
从 reCAPTCHA 响应中检索分数。现在,
$score
包含 reCAPTCHA v3 分数。

请注意,此示例假设您使用的是 Contact Form 7 插件,并且启用了 reCAPTCHA 模块并正确配置为使用 reCAPTCHA v3。此外,此代码应放置在表单提交后将执行的适当位置,例如表单提交挂钩或自定义表单处理代码。


0
投票

联系表 7(至少截至 2024 年 1 月)将最后的验证码分数存储在可通过公共 getter 函数访问的私有变量中。所以我很幸运采用了以下方法:

$recaptcha_service = WPCF7_RECAPTCHA::get_instance();
$score = $recaptcha_service->get_last_score();

仅供参考,在我的案例中,这是从

wpcf7_before_send_mail
操作运行的。

© www.soinside.com 2019 - 2024. All rights reserved.