Bonjour,
j'ai suivit le tuto de contact en php sur le site, mais rien ne sempl fonctionner... En effet l'echo "Le message est bien envoyé" est lancé, donc a priorit le script semblerait marcher, mais ce n'est pas le cas ....
http://hebergeurxz.free.fr/BanCom/tcontact.php
Voici la page en ligne.
Voici le code php:
<?php
if(isset($_POST) && isset ($_POST'titre']) && isset($_POST'mail']) && isset($_POST'message'])) {
extract($_POST);
if(!empty($titre) && !empty($mail) && !empty($message)){
$message=str_replace("\'","'",$message);
$destinataire="kinnor@live.fr";
$sujet="Contacter le propriétaire";
$msg="Une nouvelle question est arrivée \n
Nom : $titre \n
Email : $mail \n
Message : $message";
$entete="From: $titre \n Reply-To: $mail";
mail($destinataire,$sujet,$msg,$entete);
echo "<p>Le Mail a bien été envoyé.<br/> Vous serez redirigé vers la page d'acceuil dans 5 secondes.</p>";
}
else{
echo "<p>Vous n'avez pas remplis tous les champs!<br/> Vous serez redirigé vers la page de contact dans 5 secondes.</p>";
}
}
?>
Yop
Pour commencer il manque un "if" devant la fonction mail. C'est pour cela que le message est toujours affiché :p
Ensuite tu devrais remplacer ton str_replace par un :
$message = htmlspecialchars($message);
Et pour finir, et peut être résoudre ton problème. Vérifies que ton hébergeur gère l'envoie des mails.
ps : désolé pour les fautes, chui sur portable..
Comment ça je doit mettre if avant la fonction mail ? je voit pas ou je doit le mettre le if
Désolé de ne pas avoir précisé, je pensais que c'était évident ^^
Le code proposé par toumitoun est exact (mis à part le message d'erreur).
<?php
if(isset($_POST'titre']) && isset($_POST'mail']) && isset($_POST'message'])) {
extract($_POST);
if(!empty($titre) && !empty($mail) && !empty($message)){
$message = htmlspecialchars($message);
$mail = htmlspecialchars($mail);
$titre = htmlspecialchars($titre);
$destinataire="kinnor@live.fr";
$sujet="Contacter le propriétaire";
$msg="Une nouvelle question est arrivée \n
Nom : $titre \n
Email : $mail \n
Message : $message";
$entete="From: $titre \n Reply-To: $mail";
if(mail($destinataire,$sujet,$msg,$entete))
echo "<p>Le Mail a bien été envoyé.<br/> Vous serez redirigé vers la page d'acceuil dans 5 secondes.</p>";
else
echo '<p>Le mail n\'a pas été envoyé..</p>';
}else
echo "<p>Vous n'avez pas remplis tous les champs!<br/> Vous serez redirigé vers la page de contact dans 5 secondes.</p>";
}else
echo "<p>Erreur dans le formulaire.</p>";
?>
En gros, si le mail est envoyé, ton message s'affichera, sinon il affichera "Le mail n'a pas été envoyé".
Ps : Le second message d'erreur indique que l'user sera redirigé sur la page de contact dans 5 secondes, et pourtant aucune balises meta ou fonction header n'est dans le code (google is your friend ;) )
Merci bien en tout cas. Mais cela veut dire que le tuto n'est pas correct ? Car je ne vois psa le if avant le mail dans le tuto en faite...
Si comme tu le prétends, son code est identique à celui posté en 1er post, alors son code est bon mais "incomplet".
Il fonctionnera sans problême sauf si (comme dans ton cas), la fonction mail() ne s'execute pas et php execute quand même la suite.
En gros les modifs que je t'ai proposé permette juste d'afficher un message différent du "le mail a été envoyé" quand c'est pas le cas. J'espère avoir été clair ^^
Pour en revenir à ton problême, y a t-il un message d'affiché? As tu vérifié du coté de ton hébergeur voir si oui ou non il permet l'envoie de mail?