Оповещение об ошибке без обновления страницы, если reCAPTCHA не так - PullRequest
0 голосов
/ 05 декабря 2011

Я столкнулся с проблемой, я использую reCAPTCHA для защиты от спам-ботов.Проблема в том, что, когда пользователь вводит неправильные символы или оставляет пустым код, он отображает сообщение об ошибке.он также обновляет страницу, и вся информация, введенная пользователем, теряется.У меня вопрос, как показать сообщение об ошибке reCAPTCHA без обновления страницы?например, окно с предупреждением или, что еще лучше, скрытый тег ошибки, который отображается, если введена неправильная капча.

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 Ответ

1 голос
/ 05 декабря 2011

Простой способ сохранить пользовательский ввод - отправить форму тому же сценарию, который ее создал.Схема такого подхода может быть такой:

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 решения.

...