Оповещение об ошибке без обновления страницы, если reCAPTCHA неверна

Столкнулся с проблемой, использую 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 {

      }
  }
  ?>

person Ilja    schedule 05.12.2011    source источник
comment
Вы вводите капчу в ее собственной форме. Почему ты это сделал?   -  person Lightness Races in Orbit    schedule 05.12.2011
comment
нет-нет, это просто укороченная версия моего кода, извините. В этой форме есть больше вещей, например. ввод для заголовка и статьи. Я думал, что информация в данном случае не нужна.   -  person Ilja    schedule 05.12.2011
comment
@IlyaKnaup Насколько я знаю, ты не можешь. Однако вы можете сделать это намного проще для пользователя, запомнив детали, которые они ввели в вашу форму, и установив их в качестве значений на входах формы, когда вы повторно отображаете ее после ошибки Captcha.   -  person Treffynnon    schedule 05.12.2011
comment
@TomalakGeret'kal что это? Я прочитал, но какое это имеет отношение к проблеме?   -  person Ilja    schedule 05.12.2011
comment
@IlyaKnaup: Это инструкции о том, как представить свою проблему.   -  person Lightness Races in Orbit    schedule 05.12.2011
comment
@TomalakGeret'kal хорошо )))   -  person Ilja    schedule 05.12.2011


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

person webbiedave    schedule 05.12.2011