问题排查

重要提示:reCAPTCHA API 1.0 版已不再受支持,请升级到 2.0 版。了解详情


我不知道在哪里添加 reCAPTCHA

无论使用何种语言,这项建议适用于所有集成 reCAPTCHA 的用户。

首先,您需要确定代码中的两个热点。您将在其中添加 reCAPTCHA 调用。

  • 显示 reCAPTCHA:第一个热点是生成表单的代码。希望这很容易找到(通过在您的 HTML 中查找 <form> 标记),并且您可以在表单上显示人机识别系统。

  • 检查 reCAPTCHA:第二个热点似乎会导致用户出现问题。您需要确定处理表单提交的代码,即用户点击 submit 时运行的代码。很难概括这段代码,但以下线索可能对您有所帮助:

    • 如果您的表单可能会显示错误消息(例如,如果必填字段为空),请查找生成该错误消息的代码。
    • 如果您的表单将信息放入数据库中,请查找执行 SQL INSERT 的代码。
    • 如果您的表单可以发送邮件,请搜索执行相应操作的代码。

    表单已有验证

    如果您的表单已经具有一些验证逻辑(即,它通过显示消息而不是执行正常的任何操作来处理来自用户的无效输入),将变得更加简单。在这种情况下,您几乎就能随时找到能够实现所需功能的代码。如果表单可能会显示错误消息,请在代码中搜索错误消息的内容,并且您一定可以关闭表单。找到验证代码后,除了执行任何其他检查之外,您还需要添加对 check_answer 函数(电子邮件地址为空、年龄太小等)的调用。

    表单没有验证信息

    如果您的表单目前没有验证逻辑(如果点击提交始终成功),那么问题就会更加棘手。在这种情况下,您必须立即添加 reCAPTCHA 验证代码,然后现有表单处理代码在用户提交时执行它所执行的操作。您还必须弄清楚如何重新显示表单,以便用户再次尝试进行人机识别系统验证。遗憾的是,并没有一个单一的库存解决方案可以回答您如何做到这一点。这完全取决于您已有代码的结构。如果现有代码不太复杂,您或许可以在 reCAPTCHA 开发者论坛中发布代码并寻求建议。(如果您确实在那里发帖,请务必提供足够的信息来帮助他人;简单地说“我的代码不起作用”通常不会带来好的结果。)

  • 它不起作用!救命啊!

    在执行任何其他操作之前,请确保您使用的是正确的密钥。您的公钥和私钥是否已交换?您是否记得将私钥放在表单处理程序中和将公钥放在表单中?

    请注意,Mailhide 使用的密钥与基于表单的主 reCAPTCHA 使用的密钥不同

    请确保您的表单使用的是 POST 方法,否则请将 reCAPTCHA 表单处理程序变量更改为 GET,而不是 POST。

    如果 reCAPTCHA 正常运行,但您突然开始收到“发生内部错误”消息,您最近是否删除过用于注册密钥的 Google 帐号?如果是这样,请使用有效帐号注册新密钥,然后尝试。

    reCAPTCHA 接受错误的字词

    人难免会犯错,我们深知这一点。在 reCAPTCHA 中,我们使用高级风险分析引擎来确定传入请求是否来自真人。如果我们认为用户是人,就会允许他们犯下小错误。

    不,我的意思是 *完全* 不正确

    如果 reCAPTCHA 正在接受任何输入,则说明您可能未正确使用 API 服务器验证 reCAPTCHA 答案。也就是说:(1) 您未正确调用 https://www.google.com/recaptcha/api/verify(如果您使用的是插件,则调用等效函数,例如 PHP 中的 recaptcha_check_answer),或者 (2) 您未根据服务器的响应执行适当的操作。请参阅您用于安装 reCAPTCHA 的具体说明(无论是否通过插件),了解如何检查用户是否输入了正确答案。

    我的用户开始获取一个单词人机识别系统了

    reCAPTCHA 并不总是两个词。这是一项区分人类和机器人的测试。如果我们认为您是真人,我们将为您提供更简单的人机识别系统(示例如下)。我们的系统将根据您与 reCAPTCHA 的整个互动(在解决问题之前、期间和之后)来决定您是否通过测试,而不是只依靠解决方案。

    轻松进行人机识别

    如果您想了解这些简单的人机识别系统的安全性,请参阅我们的博客: http://可访问的网址 API 提供商.blogspot.com/2013/10/recaptcha-just-got-easier- but-only-if.html