You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ReCaptcha仅点击验证时生效,未验证提交表单仍可通过问题咨询

解决ReCaptcha未验证仍可提交表单的问题

嘿,我懂你遇到的这个坑——ReCaptcha看起来在用户点验证时正常,但直接提交表单居然能绕过去对吧?这其实是个很常见的误区:前端的ReCaptcha交互只是给用户看的,真正的校验必须在后端完成,毕竟前端的限制太容易被绕过了(比如用浏览器控制台改DOM、直接发POST请求)。

下面针对你的PHP场景,给你具体的修复方案:

1. 后端必须做ReCaptcha服务器端校验

这是核心中的核心,只有通过Google官方API验证用户的ReCaptcha令牌,才能确认用户真的完成了验证。

具体步骤:

  • 先获取表单提交的ReCaptcha令牌:$_POST['g-recaptcha-response'](这是ReCaptcha自动生成的隐藏字段值)
  • 用你的服务器端ReCaptcha密钥(别用客户端密钥!),向Google的验证API发送POST请求
  • 解析返回的响应,只有当success字段为true时,才处理表单数据,否则直接拒绝提交

示例修复代码:

<?php
// 替换成你自己的服务器端ReCaptcha密钥
$secretKey = "你的服务器端密钥";
// 获取表单提交的ReCaptcha令牌,为空则直接判定未验证
$responseToken = $_POST['g-recaptcha-response'] ?? '';
// 获取用户的IP地址,可选但能提升验证准确性
$userIp = $_SERVER['REMOTE_ADDR'];

// 向Google发送验证请求
$verifyApiUrl = "https://www.google.com/recaptcha/api/siteverify";
$postData = http_build_query([
    'secret' => $secretKey,
    'response' => $responseToken,
    'remoteip' => $userIp
]);

// 发起POST请求
$context = stream_context_create([
    'http' => [
        'method' => 'POST',
        'header' => 'Content-Type: application/x-www-form-urlencoded',
        'content' => $postData
    ]
]);
$verifyResult = file_get_contents($verifyApiUrl, false, $context);
$response = json_decode($verifyResult);

// 只有验证通过才处理表单
if ($response && $response->success) {
    echo "Olá, " . $_POST["name"] . " (" . $_POST["email"] . "), obrigado por enviar seu formulário!";
    // 这里可以添加保存数据、发送邮件等业务逻辑
} else {
    // 验证失败,返回提示并重新显示表单
    echo "Por favor, complete o ReCaptcha para enviar o formulário!";
    // 此处可以回显你的表单HTML代码
}
?>

2. 前端优化(可选,提升用户体验)

为了减少用户误操作,你可以在前端禁用提交按钮,直到用户完成ReCaptcha验证:

<!-- 假设你的提交按钮ID是submitBtn -->
<script>
function onCaptchaCompleted() {
    document.getElementById('submitBtn').disabled = false;
}
</script>

<!-- 在ReCaptcha组件中添加回调函数 -->
<div class="g-recaptcha" data-sitekey="你的客户端密钥" data-callback="onCaptchaCompleted"></div>
<button id="submitBtn" disabled>Enviar</button>

要记住:前端优化只是提升体验,后端校验才是安全屏障——哪怕前端被绕过,后端的校验也能牢牢挡住恶意提交。

内容的提问来源于stack exchange,提问作者Danilo Quintiliano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:43:31