Предупредително съобщение за грешка без опресняване на страницата, ако reCAPTCHA е грешна

Попаднах на проблема, използвам reCAPTCHA за защита от спам ботове. Проблемът е, че когато потребителят въведе грешни знаци или остави captcha празен, той извежда съобщение за грешка. той също опреснява страницата и цялата информация, въведена от потребителя, се губи. Въпросът ми е как да покажа съобщение за грешка на reCAPTCHA без опресняване на страницата? напр. поле за предупреждение или дори по-добре div за скрита грешка, което показва, ако е въведен грешен captcha.

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
Поставяте captcha в собствената му форма. Защо го направи?   -  person Lightness Races in Orbit    schedule 05.12.2011
comment
не, не, това е просто по-кратка версия на моя код, съжалявам. Има още неща в тази форма, напр. вход за заглавие и статия. Мислех, че информацията не е необходима в този случай.   -  person Ilja    schedule 05.12.2011
comment
@IlyaKnaup AFAIK не можете. Можете обаче да го направите много по-лесно за потребителя, като запомните подробностите, които е въвел във вашия формуляр и ги зададете като стойности на входовете на формуляра, когато го покажете отново след грешка в 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