Page 1 sur 2
formulaire contact probleme
Posté : 31 août 2011, 11:02
par crevette
Bonjour à tous,
je sais encore un sujet sur les formulaires de contact... je vous prie de m'excuser d'avance.
j'ai un souci avec mon formulaire je reçois bien un mail suite à l'envoi de mon formulaire en ligne mais ce mail est complétement vide.et je ne sais pas pourquoi j'ai essayé de suivre plusieurs tutoriel mais sans aucun succès.
si quelqu'un peut m'aider et m'expliquer pourquoi mon code php ne fonctionne pas ce serait très sympas.
voici mon code html inséré dans une balise div#contenu pour le séparer de mon menu (div#menu) et de mon titre (h1)
<form action="traitement.php" method="post" enctype="text/plain" name="form1" id="form1">
<fieldset>
<legend>contact</legend>
<div id="formulaire">
<p>
<label for="nom">Nom : </label>
<input type="text" name="nom" id="nom" accesskey="n" />
</p>
<p>
<label for="prenom">Prénom :</label>
<input type="text" name="prenom" id="prenom" accesskey="p" />
</p>
<p>
<label for="mail">Mail : </label>
<input type="text" name="mail" id="mail" accesskey="m" />
</p>
<p>
<label for="message">Message : </label>
<textarea name="message" id="message" cols="45" rows="5"></textarea>
</p>
</div>
<p>
<input type="submit" name="envoyer" id="envoyer" value="Envoyer" />
<label for="suprimer"></label>
<input type="reset" name="suprimer" id="suprimer" value="réinitialiser le formulaire" />
</p>
</fieldset>
</form>
et voici le code php associé:
<?php
$nom= $_POST['nom'];
$prenom= $_POST['prenom'];
$mail = $_POST['mail'];
$mail_body = $_POST['message'];
$destinataire="[email protected]";
$body="$message";
$header = "From: ". $nom . " <" . $mail . ">\n";
if (mail($destinataire,$subject,$body,$headers)) {
echo "Votre mail a été envoyé<br>";
} else {
echo "Une erreur s'est produite";
}
?></p>
<p align="center">Vous allez bientot etre redirigé vers la page<br>
Si vous n'etes pas redirigé au bout de 5 secondes cliquez <a href="http://www.sophiedewisme.fr">ici
</a></p>
je vous remercie d'avance de l'aide que vous pourrez m'apporter.
Pce
Re: formulaire contact probleme
Posté : 31 août 2011, 11:16
par Mazarini
Bonjour,
$mail_body = $_POST['message'];
$body="$message";
if (mail($destinataire,$subject,$body,$headers)) {
Une petite incohérence entre ces trois lignes. Ou est le contenu de ton message ?
Pour info, il faudrait supprimer les "\n" dans les variables $nom et $mail pour éviter des problèmes de manipulation de l'entête.
Re: formulaire contact probleme
Posté : 31 août 2011, 11:59
par crevette
bon si je ne me trompe pas :
$nom= $_POST['nom'];
$prenom= $_POST['prenom'];
$mail = $_POST['mail'];
$mail_body = $_POST['message'];
ceci sert à récupérer les infos placées dans les champs de texte nom, prenom, mail et message et les nommer pour php.
jusque la pas d'erreur.
$body="$message"; mon erreur doit se trouver ici car je n'ai pas de $message précédemment j'ai testé de le remplacé par $mail_body sans succès pour récupérer ['message']
donc mon code ressemble à ceci maintenant:
<?php
$nom= $_POST['nom'];
$prenom= $_POST['prenom'];
$mail = $_POST['mail'];
$mail_body = $_POST['message'];
$destinataire="mon adresse mail";
$body="$mail_body";
$header = "From: ". $nom . " <" . $mail . ">\n";
if (mail($destinataire,$body,$header)) {
echo "Votre mail a été envoyé<br>";
} else {
echo "Une erreur s'est produite";
}
?>
je reçois maintenant un mail contenant ceci: From: <> et rien d'autre il y a déja un petit avancement .... non?
Re: formulaire contact probleme
Posté : 31 août 2011, 14:44
par Mazarini
Oui, c'est bien le problème que j'avais vu.
Il serait bien d'ajouter error_reporting(E_ALL); en début de script pour avoir un message chaque fois que tu utilises une variable non initialisée (faute de frappe en général).
Il faudrait mettre un var_dump($_POST) pour voir ce que tu récupères de ton formulaire en début de script. Un var_dump($_GET) aussi.
Re: formulaire contact probleme
Posté : 01 sept. 2011, 10:36
par crevette
Bonjour,
j'ai ajouté le error reporting et il m'affiche ceci:
Parse error: syntax error, unexpected T_VARIABLE in /homez.152/sophiedeq/www/traitement.php on line 4
j'ai donc a priori une erreur sur cette ligne de code:
$nom= $_POST['nom'];
mon code complet maintenant:
<?php
error_reporting(E_ALL)
$nom= $_POST['nom'];
$prenom= $_POST['prenom'];
$mail = $_POST['mail'];
$mail_body = $_POST['message'];
$destinataire="mon adresse mail";
$body="$mail_body";
$header = "From: ". $body . " <" . $mail . ">\n";
if (mail($destinataire,$body,$header)) {
echo "Votre mail a été envoyé<br>";
} else {
echo "Une erreur s'est produite";
}
?>
mais la je ne vois pas ce qui cloche surtout a la ligne 4 :/ ...
Re: formulaire contact probleme
Posté : 01 sept. 2011, 11:34
par Mazarini
Il manque le ";" à la fin de la ligne 2
Re: formulaire contact probleme
Posté : 01 sept. 2011, 12:39
par crevette
arf ok désolé d'être tête en l'air :/
bon du coup j'ai bien mis mon point virgule
voici le rapport d'erreur
Notice: Undefined index: nom in /homez.152/sophiedeq/www/traitement.php on line 4
Notice: Undefined index: prenom in /homez.152/sophiedeq/www/traitement.php on line 5
Notice: Undefined index: mail in /homez.152/sophiedeq/www/traitement.php on line 6
Notice: Undefined index: message in /homez.152/sophiedeq/www/traitement.php on line 7
j'ai donc fait mes petites recherches de mon coté il s'avère que cet erreur et du au fait qu'il faut tester mes champs de texte j'ai donc modifié mon code comme ceci:
<?php
error_reporting(E_ALL);
$nom = '';
if (!empty ($_GET['nom'])) {
$nom= $_GET['nom'];
}
$prenom = '';
if (!empty ($_GET['prenom'])) {
$prenom= $_GET['prenom'];
}
$mail = '';
if (!empty ($_GET['mail'])) {
$mail= $_GET['mail'];
}
$mail_body = '';
if (!empty ($_GET['message'])) {
$message= $_GET['message'];
}
$destinataire="mon mail";
$body="$mail_body";
$header = "From: ". $body . " <" . $mail . ">\n";
if (mail($destinataire,$body,$header)) {
echo "Votre mail a été envoyé<br>";
} else {
echo "Une erreur s'est produite";
}
?>
avec ce code je n'ai plus d'erreur mais je reçois toujours un mail vide
j'ai testé de changer le $_GET par $_POST mais quand je fait ceci je ne reçois plus rien
Re: formulaire contact probleme
Posté : 01 sept. 2011, 12:48
par moogli
va falloir debuguer un peu la
commence par ajouter var_dump($_GET,$_POST); afin de voir ce que ces variables ont "dans le ventres".
d'après le dernier formulaire poster c'est $_POST qu'il faut utiliser !
a tu affiché les variables utilisées par la fonction mail avant leurs utilisations ?
@+
Re: formulaire contact probleme
Posté : 01 sept. 2011, 14:30
par crevette
sur mon formulaire j'utilise bien le $_POST
c est pour cela que je l'ai testé sur le fichier php.
j'ai ajouter var_dump($_GET,$_POST); juste apres l error_reporting(E_ALL);
j'ai maintenant ce ci qui s'affiche après l'envoi:
array(0) { } array(0) { }
Re: formulaire contact probleme
Posté : 01 sept. 2011, 15:01
par Mazarini
Le problème doit venir du formulaire, mais d'après ce que tu montres comme source, je ne vois pas d'erreur HTML.
Rassures moi, tu passes bien par le formulaire pour accéder à la page traitement.php ?
Re: formulaire contact probleme
Posté : 01 sept. 2011, 15:48
par crevette
oui oui tout a fait j'ai mis en ligne le formulaire html et le fichier php joint
sur le formulaire html je ne pense vraiment pas avoir fait d'erreur dessus
je l'ai joint sur mon premier post
si vous le souhaiter je peux poster la page html complète car le code html que j'ai mis je n'ai mis que la partie concernant le fomulaire il y a en plus le menu le titre et le pied de page
Re: formulaire contact probleme
Posté : 01 sept. 2011, 17:59
par crevette
bon j'ai testé en changeant sur le formulaire le method="post" par method="get"
le je reçois quelque chose :
je reçois ce qui a été rentré dans le champs mail uniquement mais pas ce qui ce trouve dans message....
petit à petit ça avance...
mais maintenant j'ai ceci qui s'affiche comme erreur après envoi du formulaire:
array(5) { ["nom"]=> string(4) "ttho" ["prenom"]=> string(5) "sghgs" ["mail"]=> string(11) "
[email protected]" ["message"]=> string(7) "ryurtuy" ["envoyer"]=> string(7) "Envoyer" } array(0) { }
Re: formulaire contact probleme
Posté : 01 sept. 2011, 19:07
par Alf?>
Salut,
A vrai dire ce n'est pas une erreur.
C'est un rapport détaillé de ce que contiennent tes variables GET grâce à var_dump($_GET).
Donc les informations de ton formulaire sont bien passé mais tu as écris :
$body="$mail_body";
Au lieu de :
$body=$mail_body;
Je ne suis pas sur que ça change grand chose car les double côtes sont censer interpréter ta variable sans avoir a concaténer avec un "."
Re: formulaire contact probleme
Posté : 02 sept. 2011, 09:56
par crevette
bonjour à tous,
bon j'ai tester de retirer le " " autour de $mail_body
comme tu l'as dit alf, ça n'a pas résolu mon probleme le résulta est identique....
la je ne sais plus trop quoi faire ....
Re: formulaire contact probleme
Posté : 02 sept. 2011, 11:14
par Mazarini
Bonjour,
Il manque le paramètre "objet" dans la fonction mail.