Bon j'ai testé ton projet chez moi, la multiplication de fonction propre a ton CMS créent de nombreux problèmes, et je pense que notre problème ici vient de là (et tu aurais ue surement beaucoup d'autres problèmes dés que tu voudrais modifier ton site) ... Je déconseille toujours de modifier un CMS quand on ne maitrise pas le language ...
Alors j'ai re-adapté ton code, en remplacant quelques fonctions par leur résultat qui, je crois, ne risque pas de changer (ex : une fonction affiché la langue de ton site, j'ai remplacé par "fr", de toute façon si tu veux changer de langue tu devras réecrire ton HTML donc sa revient au même)
Voici les 4 pages :
contact.php (page avec formulaire pour envoyer un mail) :
<?php include('header.php');
$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
try
{
$connexion = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
$connexion -> query("SET NAMES 'utf8'");
/* BDD connectee */
}
catch(Exception $e)
{
/* erreur connection */
echo 'Une erreur est survenue !';
echo 'Erreur : '.$e->getMessage().'<br />';
echo 'N° : '.$e->getCode();
die();
}
//création d'un nombre aléatoire entre 1 et 8
$nb_min = 1;
$nb_max = 8;
$nombre_aleat = mt_rand($nb_min,$nb_max);
$sql = 'SELECT adresse FROM captcha WHERE id ='.$nombre_aleat;
echo $sql;
$req = $connexion->query($sql);
$req->setFetchMode(PDO::FETCH_OBJ);
$data = $req->fetch();
$adresse = $data->adresse;
$req->closeCursor();
?>
<div id="content" class="pages page_contact">
<h1>Contactez nous</h1>
<hr /> <br />
<div class="content" style="font-size: 1em"> Bienvenue sur la page de contact, merci de remplir les champs ci-dessous afin de procéder à l'envoi de votre message. </div>
<form method="post" action="traitement.php">
<div><label for="name">Nom:</label> <input type="text" name="name" id="name" /></div>
<div><label for="email">E-mail:</label> <input type="text" name="email" id="email" /></div>
<div><label for="message">Message:</label> <textarea name="message" id="message" ></textarea></div>
<label for="captcha">Recopiez les caractères de l'image:</label> <img alt="captcha" src="<?php echo $adresse; ?>" /> <input type="text" name="captcha" id="captcha" /> <input type="hidden" name="id" value="<?php echo $nombre_aleat; ?>" />
<div><input type="submit" value="Envoyer" class="send-form"/></div>
</form>
</div> </div>
<?php include('footer.php'); ?>
traitement.php (page de traitement et envoi du mail) :
<?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 ($_POST['name'] and $_POST['email'] and $_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';
}
}
include('footer.php');
?>
header.php (pour ton thème) :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div id="wrap">
<div id="top"><a href="contact.php"><img src="logo.png" alt="Heberg-pics" /></a></div>
footer.php (ton thème aussi) :
</div><!-- wrap -->
<div id="foot">
<div id="in-foot">
<div id="foot-content">
<ul>
<li><a href="apropos">A propos</a></li><li><a href="cgu">Conditions</a></li><li><a href="dons">Dons</a></li><li><a href="news">Actualité</a></li><li><a href="partenaires">Partenaires</a></li><li><a href="contact">Contact</a></li>
</ul>
<p><?php
// Add number of uploaded images. smed79
// $files to liste *.* in "./images" ex: (.jpg, .png, etc...)
$files = glob("images/*.*");
// Variable $compteur counting files lister ($files) in "./images"
$compteur = count($files);
echo "Nous avons <font color=#FF0000>$compteur</font>";
if ($compteur > 1) { echo " images hébergées jusqu'à maintenant"; }
else { echo " images hébergées jusqu'à maintenant"; }
?></p>
</div>
<a href="http://www.heberg-pics.com" target="_blank" id="powered">© 2011 Heberg-pics - Tous droits réservés</a>
</div>
</div>
</body>
</html>
Voila essaye ça (fait attention de bien nommé les fichiers comme je l'ai fait au dessus de chaque code) et dit moi quoi.