Bon j'ai rien trouvé d'intéressant sur ton CMS alors on va tester à ma manière. J'ai fait un nouveau traitement.php, remplace l'ancien par :
<?php include('header.php');
// 1 : connexion BDD
$PARAM_hote='localhost'; // le chemin vers le serveur
$PARAM_port='3306';
$PARAM_nom_bd='captcha'; // le nom de votre base de données
$PARAM_utilisateur='root'; // nom d'utilisateur pour se connecter
$PARAM_mot_passe=''; // mot de passe de l'utilisateur pour se connecter
$connexion = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
try
{
$connexion = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
}
catch(Exception $e)
{
echo 'Erreur : '.$e->getMessage().'<br />';
echo 'N° : '.$e->getCode();
}
// 2 : recuperation de ce qu'a dit l'utilisateur sur le captcha
if ((isset($_POST['id'])) AND (!empty($_POST['id'])))
{
$id_captcha = $_POST['id'];
if ((isset($_POST['captcha'])) AND (!empty($_POST['captcha'])))
{
$reponse_captcha = $_POST['captcha'];
}
else //si l'utilisateur na pas répondu au captcha
{
die('Veuillez remplir le captcha. <a href="javascript:history.go(-1)" alt="retour" /> Retour. </a>');
}
}
else //si on a pas reçu l'id via hidden
{
die('Erreur lors du chargement de la page. <a href="javascript:history.go(-1)" alt="retour" /> Retour. </a>');
}
//si on arrive ici c'est qu'on possède l'id du captcha et la solution entrée par l'user
//3 : recuperation de la vrai solution du captcha
$sql = 'SELECT solution FROM captcha WHERE id ='.$id_captcha;
$req = $connexion->query($sql);
$req->setFetchMode(PDO::FETCH_OBJ);
$data = $req->fetch();
$solution= $data->solution;
$req->closeCursor();
//4 : comparaison solution/reponse user
//rappel : $reponse_captcha contient la reponse de l'user
// et $solution contient la vrai solution (de la BDD)
if ($reponse_captcha != $solution)
{
die('Erreur dans la recopie du captcha ! <a href="javascript:history.go(-1)" alt="retour"> Retour. </a>');
}
// 5 : envoi de l'e-mail
if ((isset($_POST['name'])) AND (!empty($_POST['name'])) AND (isset($_POST['email'])) AND (!empty($_POST['email'])) AND (isset($_POST['message'])) AND (!empty($_POST['message'])))
{
$result = true;
$name = $_POST['name'];
$email = trim($_POST['email']);
$message = $_POST['message'];
$to = '[email protected]';
$subject = 'Formulaire de contact';
$mailbody .= "Name: ".$name."\n";
$mailbody .= "E-mail: ".$email."\n\n";
$mailbody .= "Message: ".$message."\n\n";
$mailbody .= "IP: ".getenv("REMOTE_ADDR")."\n";
$mailbody .= "Browser: ".getenv("HTTP_USER_AGENT")."\n\n";
$use_phpmailer = true; // Activer/Désactiver l'utilisation de la fonction ()mail
// We are going to check the fields...
if(check_email_address($email) and check_value($name) and check_value($message)) {
// Paramètres SMTP
if($use_smtp) {
// Hail PHPMailer!
$mail = new phpmailer();
$mail->Mailer = "smtp";
$mail->Host = "smtp.gmail.com"; // SMTP host
$mail->SMTPAuth = true;
$mail->Username = "@gmail.com";
$mail->Password = "";
$mail->Timeout = 30;
$mail->From = $email;
$mail->FromName = $name;
$mail->AddAddress($to);
$mail->Subject = $subject;
$mail->Body = $mailbody;
$success = $mail->Send();
} else {
$success = mail($to, $subject, $mailbody); // $to, $subject, $mailbody
}
// Succès / Erreur
if($success) {
$output = 'Message envoyé, nous traiterons votre demande dans les plus bref délais.';
$contact_class = 'contact-ok';
} else { // Ho non ! Erreur
$output = 'Il y a eu une erreur à l\'envoie de votre message, réessayez plus-tard.';
$contact_class = 'contact-error';
}
} else { // Valeurs invalides !
$output = 'Merci de remplir les champs du formulaire correctement.';
$contact_class = 'contact-error';
}
}
else
{
echo 'Veuillez remplir correctement le formulaire svp. <a href="javascript:history.go(-1)" alt="retour" > Retour. </a>';
include('footer.php')
die();
}
include('footer.php');
?>
et dit moi ce que ça donne. Normalement la condition est formelle et l'e-mail ne s'envoit pas si les infos ne sont pas ok, donc si ça ne marche pas je donne ma langue au chat ... Le nouveau message d'erreur sera moche, c'est le dernier echo de la page, tu peux le modifier comme tu le souhaites.
Bon j'ai rien trouvé d'intéressant sur ton CMS alors on va tester à ma manière. J'ai fait un nouveau traitement.php, remplace l'ancien par :
[php]<?php include('header.php');
// 1 : connexion BDD
$PARAM_hote='localhost'; // le chemin vers le serveur
$PARAM_port='3306';
$PARAM_nom_bd='captcha'; // le nom de votre base de données
$PARAM_utilisateur='root'; // nom d'utilisateur pour se connecter
$PARAM_mot_passe=''; // mot de passe de l'utilisateur pour se connecter
$connexion = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
try
{
$connexion = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
}
catch(Exception $e)
{
echo 'Erreur : '.$e->getMessage().'<br />';
echo 'N° : '.$e->getCode();
}
// 2 : recuperation de ce qu'a dit l'utilisateur sur le captcha
if ((isset($_POST['id'])) AND (!empty($_POST['id'])))
{
$id_captcha = $_POST['id'];
if ((isset($_POST['captcha'])) AND (!empty($_POST['captcha'])))
{
$reponse_captcha = $_POST['captcha'];
}
else //si l'utilisateur na pas répondu au captcha
{
die('Veuillez remplir le captcha. <a href="javascript:history.go(-1)" alt="retour" /> Retour. </a>');
}
}
else //si on a pas reçu l'id via hidden
{
die('Erreur lors du chargement de la page. <a href="javascript:history.go(-1)" alt="retour" /> Retour. </a>');
}
//si on arrive ici c'est qu'on possède l'id du captcha et la solution entrée par l'user
//3 : recuperation de la vrai solution du captcha
$sql = 'SELECT solution FROM captcha WHERE id ='.$id_captcha;
$req = $connexion->query($sql);
$req->setFetchMode(PDO::FETCH_OBJ);
$data = $req->fetch();
$solution= $data->solution;
$req->closeCursor();
//4 : comparaison solution/reponse user
//rappel : $reponse_captcha contient la reponse de l'user
// et $solution contient la vrai solution (de la BDD)
if ($reponse_captcha != $solution)
{
die('Erreur dans la recopie du captcha ! <a href="javascript:history.go(-1)" alt="retour"> Retour. </a>');
}
// 5 : envoi de l'e-mail
if ((isset($_POST['name'])) AND (!empty($_POST['name'])) AND (isset($_POST['email'])) AND (!empty($_POST['email'])) AND (isset($_POST['message'])) AND (!empty($_POST['message'])))
{
$result = true;
$name = $_POST['name'];
$email = trim($_POST['email']);
$message = $_POST['message'];
$to = '
[email protected]';
$subject = 'Formulaire de contact';
$mailbody .= "Name: ".$name."\n";
$mailbody .= "E-mail: ".$email."\n\n";
$mailbody .= "Message: ".$message."\n\n";
$mailbody .= "IP: ".getenv("REMOTE_ADDR")."\n";
$mailbody .= "Browser: ".getenv("HTTP_USER_AGENT")."\n\n";
$use_phpmailer = true; // Activer/Désactiver l'utilisation de la fonction ()mail
// We are going to check the fields...
if(check_email_address($email) and check_value($name) and check_value($message)) {
// Paramètres SMTP
if($use_smtp) {
// Hail PHPMailer!
$mail = new phpmailer();
$mail->Mailer = "smtp";
$mail->Host = "smtp.gmail.com"; // SMTP host
$mail->SMTPAuth = true;
$mail->Username = "@gmail.com";
$mail->Password = "";
$mail->Timeout = 30;
$mail->From = $email;
$mail->FromName = $name;
$mail->AddAddress($to);
$mail->Subject = $subject;
$mail->Body = $mailbody;
$success = $mail->Send();
} else {
$success = mail($to, $subject, $mailbody); // $to, $subject, $mailbody
}
// Succès / Erreur
if($success) {
$output = 'Message envoyé, nous traiterons votre demande dans les plus bref délais.';
$contact_class = 'contact-ok';
} else { // Ho non ! Erreur
$output = 'Il y a eu une erreur à l\'envoie de votre message, réessayez plus-tard.';
$contact_class = 'contact-error';
}
} else { // Valeurs invalides !
$output = 'Merci de remplir les champs du formulaire correctement.';
$contact_class = 'contact-error';
}
}
else
{
echo 'Veuillez remplir correctement le formulaire svp. <a href="javascript:history.go(-1)" alt="retour" > Retour. </a>';
include('footer.php')
die();
}
include('footer.php');
?>[/php]
et dit moi ce que ça donne. Normalement la condition est formelle et l'e-mail ne s'envoit pas si les infos ne sont pas ok, donc si ça ne marche pas je donne ma langue au chat ... Le nouveau message d'erreur sera moche, c'est le dernier echo de la page, tu peux le modifier comme tu le souhaites.