如果reCAPTCHA错误,则不会刷新页面的警报错误消息

时间:2011-12-05 16:36:37

标签: php captcha recaptcha

我遇到了这个问题,我正在使用reCAPTCHA来防范垃圾邮件机器人。问题是,当用户输入错误的字符或将验证码留空时,它会回显错误信息。 它还会刷新页面,并且用户输入的所有信息都将丢失。 我的问题是,如何在没有页面刷新的情况下显示reCAPTCHA错误消息?例如如果输入了错误的验证码,则显示警告框或更好的隐藏错误div。

HTML

<form action="" method="post" enctype="multipart/form-data">
   <div id="sc_header" style="margin-top: 11px;">Human check</div>
      <p><?php
          require_once('recaptchalib.php');
          $publickey = "my_public_key_here";
          echo recaptcha_get_html($publickey);
          ?></p>
       <p style="float: left;"><input type="submit" value="Send"></p>
       <input name="story-create" type="hidden" value="submit">
</form>

PHP

<?php
if ($_POST['story-create'] == "submit"){
      require_once('inc/recaptchalib.php');
      $privatekey = "my_private_key_here";
      $resp = recaptcha_check_answer ($privatekey,
                                    $_SERVER["REMOTE_ADDR"],
                                    $_POST["recaptcha_challenge_field"],
                                    $_POST["recaptcha_response_field"]);

      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 {

      }
  }
  ?>

1 个答案:

答案 0 :(得分:1)

保留用户输入的一种简单方法是将表单提交给生成表单的同一脚本。这种方法的概要可以是:

<强> signup.php

<?php

// if data submitted, perform validation (if sign up is successful, redirect to success page)

?>
<form action="signup.php" method="post">
    <input type="text" name="username" value="<?php if (!empty($_POST['username'])) echo strip_tags($_POST['username']) ?>" />
    <!-- etc... -->
</form>

这个答案假设你想要“没有页面刷新”,因为你认为它会避免清除表单,而不是想要一个AJAXian解决方案。