2011-12-05 52 views
0

我遇到了問題,我正在使用reCAPTCHA來防止垃圾郵件機器人。問題是,當用戶輸入錯誤的字符或將驗證碼留空時,它會迴應一條錯誤消息。 它也刷新頁面,並且用戶輸入的所有信息都會丟失。 我的問題是,如何在不刷新頁面的情況下顯示reCAPTCHA錯誤消息?例如一個警告框或甚至更好的隱藏的錯誤div顯示錯誤的captcha輸入。如果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 { 

     } 
    } 
    ?> 
+0

您將驗證碼以其自己的形式。你爲什麼這麼做? –

+0

不,不,它只是我的代碼的較短版本,對不起。這種形式有更多的東西,例如輸入標題和文章。我認爲這種情況下不需要信息。 – Ilja

+1

@IlyaKnaup AFAIK你不能。但是,通過記住他們在表單中輸入的詳細信息,並在Captcha錯誤後重新顯示時將其設置爲表單輸入值,可以使用戶更容易。 – Treffynnon

回答

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> 

這個答案,假設你想「無刷新頁面」,因爲你認爲它會避免形式的結算,而不是想要一個AJAX方式解。

相關問題