Votre question

Problème intégration Recaptcha formulaire

Tags :
  • Php
  • Programmation
Dernière réponse : dans Programmation
11 Juillet 2009 19:54:55

Voila mon problème j'ai mis un captcha de recaptcha pour éviter le spam du formulaire d'envoi de mail. Malheuresement lorsque on ne remplis pas le recaptcha l'email s'envoi quand meme et de même avec des mots erronés. je sais que mon problème est dans le action du from et dans le recaptcha au niveau du if ($resp->is_valid) {
Voila mes sources. Merci

Contact.php :
Spoiler
<form method="post" name="contact" action="<?php $test ?>">
<table align="center">
<tr>
<td>
Civilité* :
</td>
<td>
Mme<input type="radio" name="civilite" value="Mme" <?php if ($civilite=='Mme') ?> />
Mlle <input type="radio" name="civilite" value="Mlle" <?php if ($civilite=='Mlle') ?> /> Mr <input type="radio" name="civilite" value="Mr" <?php if ($civilite=='Mr') ?> />
</td>
</tr>
<tr>
<td>
Nom* :
</td>
<td>
<input type="text" name="nom" value="<?php echo $_POST["nom"] ?>">
</td>
</tr>
<tr>
<td>
Prénom :
</td>
<td>
<input type="text" name="prenom" value="<?php echo $_POST["prenom"] ?>">
</td>
</tr>
<tr>
<td>

Pays* :
</td>
<td>
<select name="pays" >
<?php

$Liste = file("liste_pays.txt");
$Pays = explode(";",$Liste[0]);
for ($i=0;$i<count($Pays);$i++)
{
if ($Pays[$i]=='France')
echo "<option value=\"$Pays[$i]\" selected=\"selected\" >$Pays[$i]</option>";
else
echo "<option value=\"$Pays[$i]\" >$Pays[$i]</option>";}
?>

</select>
</td>
</tr>
<tr>
<td>
Votre Email* :
</td>
<td>
<input type="text" name="email" value="<?php echo $_POST["email"] ?>">
</td>
</tr>
<tr>
<td>
Téléphone :
</td>
<td>
<input type="text" name="telephone" value="<?php echo $_POST["telephone"] ?>">
</td>
</tr>
<tr>
<td>
Sujet* :
</td>
<td>
<input type="text" name="sujet" value="<?php echo $_POST["sujet"] ?>">
</td>
</tr>
<tr>
<td colspan="2">
Message* : <br>
<textarea name="message" cols="40" rows="8"><?php echo $_POST["message"] ?></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<br>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<?php

require_once('recaptchalib.php');
$publickey = "6LebLgcAAAAAANcumYA1lNgt2V9CoZXF07yWAv5X ";
$privatekey = "6LebLgcAAAAAACDvLqx9g9KA19WfAP6U0WaeI_Vq ";

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

# are we submitting the page?
if ($_POST["submit"]) {
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);

if ($resp->is_valid) {
$test .= "traitement.php";
# in a real application, you should send an email, create an account, etc
} else {
# set the error code so that we can display it. You could also use
# die ("reCAPTCHA failed"), but using the error message is
# more user friendly
$error = $resp->error;
}
}
echo recaptcha_get_html($publickey, $error);
?>
</td>
</tr>
<tr>
<td align="center">
<input type="submit" name="submit" value="Envoyer">
</td>
<td align="center">
<input type="reset" value="Réinitialiser">
</td>
</tr>
<tr>
<td colspan="2">
<br>
</td>
</tr>
</table>
</form>

Et voila mon fichier de traitement.php :

Spoiler
<?php
$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>";
$msg_ok = "Votre Message a bien été envoyer.";
$message = $msg_erreur;
define('MAIL_DESTINATAIRE','pwr94@live.fr'); // remplacer par votre email

// vérification des champs
if (empty($_POST['civilite']))
$message .= "Votre civilite<br/>";
if (empty($_POST['nom']))
$message .= "Votre nom<br/>";
if (empty($_POST['pays']))
$message .= "Votre pays<br/>";
if (empty($_POST['email']))
$message .= "Votre E-mail<br/>";
if (empty($_POST['sujet']))
$message .= "Votre sujet<br/>";
if (empty($_POST['message']))
$message .= "Votre message<br/>";

// si un champ est vide, on affiche le message d'erreur
if (strlen($message) > strlen($msg_erreur)) {

echo $message;

// sinon c'est ok
} else {

foreach($_POST as $index => $valeur) {
$$index = stripslashes(trim($valeur));
}

$objet="".$_POST["sujet"].""; // titre du mail automatique
$message_envoi="Vous avez reçu une demande de contact ! \n";
$message_envoi.="Voici le contenu : \n"; //déclaration du contenu du message
$message_envoi.="\n";
$message_envoi.="Identité : ".$_POST["civilite"].", ".$_POST["nom"]." ".$_POST["prenom"]." \n";
$message_envoi.="E-mail : ".$_POST["email"]." \n";
$message_envoi.="Téléphone: ".$_POST["telephone"]." \n";
$message_envoi.="\n";
$message_envoi.="Sujet : ".$_POST["sujet"]." \n";
$message_envoi.="\n";
$message_envoi.="Message : ".$_POST["message"]." \n\n";
$message_envoi.= "Date : ". date("D, j M Y H:i:s"); //date;
$entete = "From: ".$_POST["civilite"]." ".$_POST["nom"]." ".$_POST["prenom"]."\n"; // expéditeur
$entete .= "Reply-To: ".$_POST["email"]." \n"; // Adresse de retour, retour à l'envoyeur en cas d'erreur
$entete .= "X-Mailer: PHP/" . phpversion() . "\n" ; //version
$entete .='Content-Type: text/plain; charset="utf-8"'."\n";
$entete .='Content-Transfer-Encoding: 8bit';

// envoi du mail
if (mail(MAIL_DESTINATAIRE,$objet,$message_envoi,$entete)) {

//Le mail est bien expédié
echo $msg_ok;
} else {

//Le mail n'a pas été expédié
echo 'Une erreur est survenue lors de l\'envoi du formulaire par email';
}
}
?>


Problème résolu.

Autres pages sur : probleme integration recaptcha formulaire

11 Juillet 2009 21:31:12

Problème résolue
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS