Formulaire PHP - Bonne reception du e-mail mais sans le contenu (vide)

adriendk Messages postés 5 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 17 octobre 2010 - 27 févr. 2010 à 15:49
gibozsec Messages postés 318 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 11 mars 2010 - 1 mars 2010 à 18:16
Bonjour, alors j'ai un gros probème ca fait une semaine que je cherche l'erreur de mon formulaire dont la reception du mail est VIDE. Cela dis je reçois bien l'e-mail mais sans son contenu.

Merci de votre aide.

Voici le code PHP:


<?php
$nom= $_POST['$nom'];
$prenom= $_POST['$prenom'];
$sujet= $_POST['$sujet'];
$email= $_POST['$email'];
$adresse="lemaireadrien59@gmail.com";
$from="From: $prenom $nom<$email>\r\n";
$from="Reply-To: $prenom $nom <$email>\n";
$from="X-priority:3\n";
$texte="<html>";
$texte="$texte";
$texte="</html>";
$from="MIME-Version: 1.0\r\n";
$from="Content-Type: text/html";
if (mail($adresse,$sujet,$texte,$from))
echo("<center>

E-mail sent ! I will answer to you as soon as possible.Thanks you !

Click here to come back home</center>");
else
echo("<center>

You're e-mail can not be sent sorry for inconvenience.

Contact me in a normal way");
?>

</html>

6 réponses

gibozsec Messages postés 318 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 11 mars 2010
27 févr. 2010 à 19:05
Bonjour,


l'erreur se situe ici :

$texte="<html>";
$texte="$texte";
$texte="</html>";

A la fin ta variable ne contient que le balise de fermeture html.

Pour concatener des chaines de caractères tu dois utiliser le point :

$texte="<html>";
$texte.="$texte";
$texte.="</html>";

Ca devrait résoudre le problème.

Grrrrrrrrrrr
0
adriendk Messages postés 5 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 17 octobre 2010
27 févr. 2010 à 21:29
Bonjour et merci,

Je viens d'essayer mais l'e-mail est toujours vide
0
gibozsec Messages postés 318 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 11 mars 2010
28 févr. 2010 à 10:27
Bonjour,

Au temps pour moi, j'avais lu rapidement le code et j'avais pas vu le problème avec ta variable texte.

Voilà ce que fait ton code :

$texte="<html>"; //La variable $texte contient seulement "<html>"
$texte.="$texte"; //Tu ajoutes de nouveau la variable $texte, elle contient donc maintenant "<html><html>"
$texte.="</html>"; //Tu ferme la balise, la variable contient maintenant "<html><html></html>"

En gros à aucun moment tu ne met de message dans ton mail, normal donc qu'il soit vide.

D'où vient le texte que tu veux mettre dans ton message ?




Grrrrrrrrrrr
0
hassxhassx Messages postés 3 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 28 février 2010
28 févr. 2010 à 20:11
boyss
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
adriendk Messages postés 5 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 17 octobre 2010
1 mars 2010 à 13:05
Désolé je ne comprend pas vraiment tout ce que tu me dis... Je débute :s
Le texte vient de l'utilisateur qui souhaite m'envoyer un message par l'intermédiaire de mon site web.

Le message reste vide, ainsi que le sujet et l'email de la personne.
0
gibozsec Messages postés 318 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 11 mars 2010
1 mars 2010 à 18:16
Bonjour,

Je vais essayer d'expliquer plus clairement et avec plus de détails.

Tout d'abord tu dois récupérer les valeurs à utiliser pour l'envoi du mail (le destinataire, le message, ...).

Pour cela, si ça vient d'un formulaire, c'est soit envoyé en POST soit en GET. La différence entre POST et GET c'est que les données en POST sont envoyée avec l'entête HTTP de la requête alors que celle en GET sont transmises dans l'url. Comme je ne sais pas comment tu les récupères je vais supposer que c'est en POST.

Pour récupérer un paramètre passé en post voilà ce que tu dois faire :

<?php

if(isset($_POST['nom'])){
$nom = $_POST['nom'];
}
else{
$nom = 'Inconnu';
}
}
?>

Ici tu utilisais $_POST["$nom"] hors $nom ne contenait rien donc c'est comme si tu essayais d'accéder à $_POST[''], donc la valeur est null. Cette remarque vaut pour les autres champs.

N'oublie pas de récupérer également le corps du message (le texte que tu veux mettre dans le mail).

Une fois que tu as tout ça, tu prépares tes variables utiles à l'envoi (tu le fais déjà mais avec des erreurs).

Lorsque tu écris un code ressemblant à <?php $variable = "blabla"; ?> alors la variable $variable contient "blabla" et tout ce qu'elle contenait avant est écrasé (perdu). Si tu veux ajouter du texte à une variable tu dois utiliser l'opérateur "point" comme ceci :

<?php
$variable = "du texte";
$variable .= " et encore du texte";
?>

A la fin de ce code, ta variable vaut "du texte et encore du texte" (ça te sera utile pour ton $from par exemple.


Enfin, tu envois le mail, ça tu sais faire.


J'espère n'avoir raté aucune de tes erreurs cette fois (j'ai tendance à lire un peu vite) et t'avoir aidé.




Grrrrrrrrrrr
0
Rejoignez-nous