【问题标题】:Captcha php code missing?验证码 php 代码丢失?
【发布时间】:2013-05-16 14:13:09
【问题描述】:

我是这里的新手,所以希望我在正确的地方发帖!我对代码和一般技术问题只有最基本的了解,所以我希望我能解释一下......

我正在尝试在我的网站上的表单上实施验证码,以阻止机器人对其进行攻击。我正在使用这个:

https://developers.google.com/recaptcha/docs/php

我为客户端创建了一个测试 php 文件,并成功在表单上实现了小部件。

我还为服务器端创建了一个 verify.php 文件,但是我不清楚在 verify.php 文件中输入的内容(根据上面的链接)以 bold 表示:

if (!$resp->is_valid) {

**// What happens when the CAPTCHA was entered incorrectly**

   die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .

        "(reCAPTCHA said: " . $resp->error . ")");

} else {

 **// Your code here to handle a successful verification**

说明如下,但我不明白在哪里输入什么。

在上面的代码中: recaptcha_check_answer 返回一个表示用户是否成功完成挑战的对象。

如果 $resp->is_valid 为真,则验证码质询已正确完成,您应该继续处理表单。

如果 $resp->is_valid 为 false,则用户未能提供正确的验证码文本,您应该重新显示表单以允许他们再次尝试。在这种情况下,$resp->error 将是一个可以提供给 recaptcha_get_html 的错误代码。传递错误代码会使 reCAPTCHA 控件显示一条消息,说明用户输入的文本不正确,应该重试。

非常感谢任何帮助!

非常感谢。 标记

【问题讨论】:

  • 您插入您希望如何处理成功/不成功的验证,例如显示错误消息,或将人员重定向到他们需要解决验证码才能访问的页面。
  • 重定向到填充验证码的页面,出现错误消息请填写您在图像中看到的正确文本或类似内容。

标签: php recaptcha


【解决方案1】:

//验证码输入错误时会发生什么 -> 在此之下,应该有类似将用户重定向回表单页面并显示他没有填写验证码的消息正确。

//您的代码在这里处理成功验证 -> 在此下,正常提交您的联系表单。

这是我网站上的有效代码:

$publickey = "YOUR PUBLIC KEY HERE";
$privatekey = "YOUR PRIVATE KEY";
$resp = null;
$resp = recaptcha_check_answer ($privatekey,
                              $_SERVER["REMOTE_ADDR"],
                              $_POST["recaptcha_challenge_field"],
                              $_POST["recaptcha_response_field"]);

if($resp->is_valid){
    // under this, submit your contact form normally.
}
else {
    header("Location: page_where_the_user_was.php?error=1");
            die();
}

【讨论】:

  • 好的,非常感谢。我想我现在更困惑了!所以我需要输入一些新代码吗?或者输入原始问题底部说明中的内容?
【解决方案2】:
if (!$resp->is_valid) {

**// What happens when the CAPTCHA was entered incorrectly**

   die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .

        "(reCAPTCHA said: " . $resp->error . ")");

} else {

 **// Your code here to handle a successful verification**

echo "Login succesfull"; }

【讨论】:

  • 感谢您的快速回复! :-) 我添加了代码,但它仍然在做同样的事情,即即使输入验证码的单词错误也可以继续到下一页。 :-(
  • 这是所有代码:is_valid) { die ("reCAPTCHA 输入不正确。回去再试一次。" . "(reCAPTCHA said: " . $resp->error . ")"); } else { echo "登录成功"; } } ?>
【解决方案3】:

这包括重定向到他们需要再次填写验证码的页面。 希望对你有所帮助。

    if (!$resp->is_valid) {

    **// What happens when the CAPTCHA was entered incorrectly**

    header('Location: index.php');
   **// Or test.php, I don't know the name of your page

       die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .

            "(reCAPTCHA said: " . $resp->error . ")");

    } else {

     **// Your code here to handle a successful verification**

    echo "Login succesfull"; }

【讨论】:

  • 感谢您的帮助!我输入了您的代码并插入了正确的重定向页面,但无论在验证码中输入的单词是否正确,表单仍然成功完成:-(
  • @Marijke 请下次在创建新答案的地方编辑您的答案。谢谢
  • 再次感谢您的帮助,我想我快到了!抱歉这些愚蠢的问题,但我有两个...a) 哪里说“// 你的代码在这里处理成功的验证” - 这是否意味着我需要一些代码来处理这一行?它会是什么样子? b) 在同一个文件的代码中更进一步,它显示“$_SERVER["REMOTE_ADDR"]”——这是否意味着我需要输入我的服务器地址?感谢您的耐心:-)
猜你喜欢
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 2014-01-16
  • 2011-04-06
  • 1970-01-01
  • 2022-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多