Version complète: sur le forum Webmaster Hub : Problème avec un formulaire de contact
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
ricus1er
Bonjour à tous,

J'ai mis en place un formulaire de contact sur mon site, que vous pouvez trouvez à l'adresse suivante : http://www.litzler.fr/contact.htm.

Tout semble marcher correctement, mais je ne reçois aucun mail, malgré le message de succès qui arrive. Est-ce que quelqu'un sait d'où ça peut venir ?

Merci pour votre aide,

Eric
Chark
J'ai parcouru très rapidement les codes sources de tes 2 pages ( contact.php et traitement.php ) ==> je ne trouve nulle part de fonctions "mailto"..
De ce que je vois rapidement, à la page "contact", l'internaute saisi ses informations et cela envoie ensuite à la page "traitement" qui affiche que c'est ok MAIS je ne voit nulle part une fonction qui permette d'envoyer ces info a une adresse email..
question: ce sont des pages php que tu "rewrite" en htm ( si c'est le cas faudrais que tu donne le code php qui ne s'affiche pas en navigation directe ) ?
v4np13
Il nous faudrait le code PHP de la page traitement.php pour pouvoir t'aider wink.gif
Anonymus
CITATION(v4np13 @ mercredi 28 décembre 2005, 00h18)
Il nous faudrait le code PHP de la page traitement.php pour pouvoir t'aider  wink.gif
*

Oui. Le résultat html du traitement du formulaire ne suffit pas à trouver ce genre de problèmes, il faut le code php.
ricus1er
Effectivement, c'est pas très malin de ma part... Voici le code du fichier traitement.php :

CODE
<?php
$adresse="monadressemail";
$from="From: $requiredPrenom $requiredNom<$requiredEmail>\r\n";
$from.="Reply-To: $requiredPrenom $requiredNom <$requiredEmail>\n";
$from.="X-priority:3\n";
$sujet.="$requiredSujet";
$texte="<html>";
$texte.="$requiredcommentaires";
$texte.="</html>";
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/html";  
if (mail($adresse,$sujet,$texte,$from)){
include("index.php");
header_litzler();
echo"<center><font color=blue><br><h4>Formulaire envoyé ! Je vous répondrais rapidement. Merci!</h4></font><br><a href=/>Cliquez ici pour revenir à l'accueil</a></center><br>";
footer_litzler();
}
else {
include("index.php");
header_litzler();
echo"<center><font color=red><br><br><br><h2>Problème à l'envoi du mail...désolé nous ne pouvons actuellement traiter votre demande</h2></font><br>Contactez nous plus <a href='mailto:$adresse'>classiquement</a>";
footer_litzler();
}
?>
Anonymus
CODE
if (mail($adresse,$sujet,$texte,$from)){

Il faut savoir que la fonction 'mail' renvoie toujours un booléen.
Sinon, essaies d'afficher le texte que tu envoies dans ton mail, avant de l'envoyer.
CODE
echo"<p>adresse : -".$adresse."-";
echo"<p>sujet : -".$sujet."-";
etc..

Au moins, tu en sauras plus sur ce que tu envoies précisément.

2/, enlèves les lignes 'headers' les unes à la suite des autres, histoire de voir où ca plante. Un coup de :
CODE
//   $from="From: $requiredPrenom $requiredNom<$requiredEmail>\r\n";
//   $from.="Reply-To: $requiredPrenom $requiredNom <$requiredEmail>\n";
//   $from.="X-priority:3\n";
$sujet.="$requiredSujet";
$texte="<html>";
$texte.="$requiredcommentaires";
$texte.="</html>";
//   $from.="MIME-Version: 1.0\r\n";
//   $from.="Content-Type: text/html";  


et ajoutes y un peu de 'trim' autour des variables que tu recois wink.gif
(et vérifies que ce que tu recois ne comporte rien d'offensif...)
ricus1er
Ouhla....

J'ai oublié de préciser que je suis un webmaster très débutant. Je me suis inspiré de conseils sur d'autres sites, donc je vais essayer de faire ce que tu as dit, mais j'avoue que j'ai besoin d'une ou deux étapes supplémentaires, parce que tu vas trop vite pour moi.

Il faut que je colle le code que tu m'as envoyé dans mon fichier traitement.php, c'est ça ?

Merci du tps que tu m'accordes...
Anonymus
remplaces les lignes suivantes :
CODE
$from="From: $requiredPrenom $requiredNom<$requiredEmail>\r\n";
$from.="Reply-To: $requiredPrenom $requiredNom <$requiredEmail>\n";
$from.="X-priority:3\n";
$sujet.="$requiredSujet";
$texte="<html>";
$texte.="$requiredcommentaires";
$texte.="</html>";
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/html";
par :

CODE
//   $from="From: $requiredPrenom $requiredNom<$requiredEmail>\r\n";
//   $from.="Reply-To: $requiredPrenom $requiredNom <$requiredEmail>\n";
//   $from.="X-priority:3\n";
$sujet.="$requiredSujet";
$texte="<html>";
$texte.="$requiredcommentaires";
$texte.="</html>";
//   $from.="MIME-Version: 1.0\r\n";
//   $from.="Content-Type: text/html";


et juste avant la ligne :
CODE
if (mail($adresse,$sujet,$texte,$from)){

tu mets :
CODE
echo"<p>adresse : -".$adresse."-";
echo"<p>sujet : -".$sujet."-";
echo"<p>texte : -".$texte."-";
echo"<p>from : -".$from."-";

Et... Regardes le résultat du code source (pas l'affichage à l'écran.. )
ricus1er
C'est ce que j'ai fait.
En apparence, rien ne change, mais je reçois le mail suivant de la part de OVH qui ne correspond pas à ce que j'ai écris dans le formulaire :

-----Message d'origine-----
De : litzler [mailto:nom_AT_60gp.ovh.net]
Envoyé : vendredi 30 décembre 2005 00:30
À : Monadressemail
Objet :


<html></html>


Tu as une idée de ce que c'est ?
ricus1er
Autant pour moi, j'ai pas bien regardé.

Une fois que j'ai recopié tout ce que tu m'as dit, j'ai :
adresse : -mon adresse-

sujet : --

texte : --

from : --

ça veut dire que les contenus ne sont pas détectés, mais je sais pas d'où ça vient... Je vais essayer de voir ce que c'est.
Anonymus
Ca vient (très probablement) du fait que ton serveur ne récupère pas automatiquement les variables postées par POST.
Donc, toutes les variables du formulaire doivent être appelées ainsi :
$_POST['sujet'] au lieu de $sujet.

Essaies ceci, tant qu'à faire :
CODE
echo"<p>sujet : -".$_POST['sujet']."-";
echo"<p>texte : -".$_POST['texte']."-";
echo"<p>from : -".$_POST['from."-";

Une précision : Les tirets que je mets de chaque coté de la variable sont faits pour :
1/
détecter si la variable n'affiche pas un espace (ce que l'on ne détecterait pas si l'on n'avait pas un caractère de fin)
2/
détecter les retour chariots

Voilà.

ps : ton 'monadressemail' est en clair, dans ton 2e message. smile.gif
ricus1er
ça y est, c'est quasiment réglé. Merci beaucoup pour ton aide, sur ce forum ou en dehors !!
A bientôt

Eric
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.