formulaire contact probleme

Eléphanteau du PHP | 10 Messages

31 août 2011, 11:02

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

ViPHP
ViPHP | 2577 Messages

31 août 2011, 11:16

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.

Eléphanteau du PHP | 10 Messages

31 août 2011, 11:59

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?

ViPHP
ViPHP | 2577 Messages

31 août 2011, 14:44

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.

Eléphanteau du PHP | 10 Messages

01 sept. 2011, 10:36

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 :/ ...

ViPHP
ViPHP | 2577 Messages

01 sept. 2011, 11:34

Il manque le ";" à la fin de la ligne 2

Eléphanteau du PHP | 10 Messages

01 sept. 2011, 12:39

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

01 sept. 2011, 12:48

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 ?

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 10 Messages

01 sept. 2011, 14:30

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) { }

ViPHP
ViPHP | 2577 Messages

01 sept. 2011, 15:01

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 ?

Eléphanteau du PHP | 10 Messages

01 sept. 2011, 15:48

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

Eléphanteau du PHP | 10 Messages

01 sept. 2011, 17:59

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) { }

Eléphanteau du PHP | 34 Messages

01 sept. 2011, 19:07

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 "."

Eléphanteau du PHP | 10 Messages

02 sept. 2011, 09:56

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 ....

ViPHP
ViPHP | 2577 Messages

02 sept. 2011, 11:14

Bonjour,

Il manque le paramètre "objet" dans la fonction mail.