2008-12-09 8 views
0

J'ai un problème avec le formulaire que j'utilise dans ma page Web.Problème avec Recaptcha

Il permet le recaptcha mais il envoie également l'email sans valider les champs dans la boîte de recaptcha. Ce formulaire utilise Ajax et PHP.

J'ai collé le code suivant:

<br> <br> <div id="fields"> 

<form action="javascript:alert('success!');"> 
<label>Nombre</label><INPUT class="textbox" type="text" name="name" value=""><br /> 

<label>eMail</label><INPUT class="textbox" type="text" name="email" value=""><br /> 

<label>Asunto</label><INPUT class="textbox" type="text" name="subject" value=""><br /> 

<label>Mensaje</label><TEXTAREA class="textbox" NAME="message" ROWS="5" COLS="25"></TEXTAREA><br /> 

<?php 

require_once('recaptchalib.php'); 

// Get a key from http://recaptcha.net/api/getkey 
$publickey = "6LekPAQAAAAAAFoAJRfRtd9vmlzA9m-********"; 
$privatekey = "6LekPAQAAAAAAFqNcNsrnZba0-ZMg-********"; 

# the response from reCAPTCHA 
$resp = null; 
# the error code from reCAPTCHA, if any 
$error = null; 

# was there a reCAPTCHA response? 
if ($_POST["recaptcha_response_field"]) { 
     $resp = recaptcha_check_answer ($privatekey, 
             $_SERVER["REMOTE_ADDR"], 
             $_POST["recaptcha_challenge_field"], 
             $_POST["recaptcha_response_field"]); 

     if ($resp->is_valid) { 
       echo "Bien escrito!"; 
     } else { 
       # set the error code so that we can display it 
       $error = $resp->error; 
     } 
} 
echo recaptcha_get_html($publickey, $error); 
?> 
    <br/> 

<label>&nbsp;</label><INPUT class="button" type="submit" name="submit" value="Enviar"> 
</form> 
</div> 

</fieldset> 

Merci beaucoup.

David.

Répondre

1

Le problème est que vous devez vérifier le reCAPTCHA avant d'afficher à nouveau le formulaire. Le code PHP irait au-dessus de la première ligne du formulaire, de préférence avant que tout code HTML ne soit généré afin que l'utilisateur puisse être redirigé vers une page de remerciement.