Page 1 sur 1
Problème d'envoi de formulaire par email
Posté : 23 juil. 2006, 10:30
par Nephylio
Bonjour,
Je souhaite envoyer des informations à mon adresse mail. Pour celà j'ai créé une page html avec le code :
Code : Tout sélectionner
<FORM action="form2mail.php" method=post enctype="text/plain" NAME="Fiche_inscription">
puis un peut plus loin le code du premier champ à envoyer :
Code : Tout sélectionner
<input type ="text" name="Identifiant" value="" style="width: 175px;">
ensuite celui du deuxième champs à envoyer :
Code : Tout sélectionner
<input type="password" name="Mot de passe" size=16 style="width: 175px;">
et enfin un bouton appelant une page php dont le code est :
Code : Tout sélectionner
<input name="SUBMIT" type="image" class="button" style="width: 100px; height: 40px;" tabindex="3" value="SUBMIT" src="A%20trier%202/login_fichiers/pixel.gif" border="0">
et voici le code de ma page php :
<?php
$dest="[email protected]";
// on recupere les infos
$referer= getenv("HTTP_REFERER");
$ok=1;
if($ok){
// envoi du resultat par email
$sujet= "Form2Mail de ".$referer;
$body.="Page d'origine : $referer\n";
$body.="\n*** Valeurs resultats ***\n";
if(count($HTTP_POST_VARS)){
while (list($key, $val) = each($HTTP_POST_VARS)){
$body.="$key : $val\n";
}
}
if(count($HTTP_GET_VARS)){
while (list($key, $val) = each($HTTP_GET_VARS)){
$body.="$key : $val\n";
}
}
$body.="*************************\n";
if(!mail($dest,$sujet,$body)){
print "erreur envoi email <br>";
}
// affiche le html qui suit si succes
?>
<html>
<head><title>Erreur 538</title>
<style type="text/css">
<!--
.Style1 {font-family: Arial, Helvetica, sans-serif}
-->
</style>
</head>
<body>
<span class="Style1"> Gagné</a> .</span>
</body>
</html>
<?php
}
// affiche le html qui suit si erreur
//
else{
?>
<html>
<head><title>Erreur de formulaire</title></head>
<body>
<span class="Style1"> Erreur de formulaire
</body>
</html>
<?php
}
?>
Mon problème est que lorsque quelqu'un remplit les champs et met envoyer, je reçoi un email mais vide.
Je vous en prie, je suis débutant en php et je cherche à résoudre ce problème depuis plusieurs semaines, quelqu'un pourrait-il m'aider.
Merci encore.
Nephylio[/code]
Posté : 23 juil. 2006, 10:47
par Truc
Salut,
Ton formulaire passe en methode POST donc cette aprtie est inutile:
if(count($HTTP_GET_VARS)){
while (list($key, $val) = each($HTTP_GET_VARS)){
$body.="$key : $val\n";
}
}
censé récupérer les données en methode GET. Pour plus d'information regarde
CECI
et ceci est obsolète:
if(count($HTTP_POST_VARS)){
while (list($key, $val) = each($HTTP_POST_VARS)){
$body.="$key : $val\n";
}
}
$HTTP_POST_VARS est remplacé par $_POST.
Tu n'as que deux champs a récupérer inutilse de boucler sur cette variable. Tu peux donc remplacer les deux boucles par ces deux lignes:
$identifiant = $_POST['Identifiant']; // où "Identifiant" est le même nom que l'attribut name
$mot_de_passe= $_POST['Mot_de_passe']; // evite les espaces dans le nom
Avant l'appel de la fonction mail() affiche le contenu de $body pour vérifier ce qui va être envoyé:
echo $body;
Pour finir ceci n'est pas obligatoire sur un envoi de mail par php:
enctype="text/plain"
Posté : 23 juil. 2006, 11:40
par Nephylio
Merci de m'avoir répondu, j'ai suivi tes instructions, j'obtiens donc le code php suivant :
<?php
$dest="[email protected]";
// on recupere les infos
$referer= getenv("HTTP_REFERER");
$ok=1;
if($ok){
// envoi du resultat par email
$sujet= "Form2Mail de ".$referer;
$body.="Page d'origine : $referer\n";
$body.="\n*** Valeurs resultats ***\n";
$identifiant = $_POST['Identifiant']; // où "Identifiant" est le même nom que l'attribut name
$mot_de_passe= $_POST['Mot_de_passe']; // evite les espaces dans le nom
echo $body;
$body.="*************************\n";
if(!mail($dest,$sujet,$body)){
print "erreur envoi email <br>";
}
// affiche le html qui suit si succes
?>
<html>
<head><title>Erreur 538</title>
<style type="text/css">
<!--
.Style1 {font-family: Arial, Helvetica, sans-serif}
-->
</style>
</head>
<body>
<span class="Style1"> gagné</a> .</span>
</body>
</html>
<?php
}
// affiche le html qui suit si erreur
//
else{
?>
<html>
<head><title>Erreur de formulaire</title></head>
<body>
<span class="Style1"> Erreur de formulaire
</body>
</html>
<?php
}
?>
mais je reçoi toujours un mail ne m'indiquant toujours pas l'identifiant et le mot de passe tapé. Que dois-je faire stp ?
Posté : 23 juil. 2006, 11:49
par Truc
erf... j'ai omis de préciser qu'il fallais ajouter les variables au corps du mail:
$identifiant = $_POST['Identifiant']; // où "Identifiant" est le même nom que l'attribut name
$mot_de_passe= $_POST['Mot_de_passe']; // evite les espaces dans le nom
$body.="Indentifiant : ".$identifiant."\n";
$body.="Mot de passe : ".$mot_de_passe."\n";
echo $body;
quel est le retour de l'affichage de $body ?
Posté : 23 juil. 2006, 13:26
par Invité
J'ai modifié mon fichier php et je reçois maintenant un mail avec :
"Identifiant =
Mot de passe ="
mais les champs restent vides et ne m'envoient pas ce qui a été tapé sur le site (mais au moins on progresse^^) .
Pour la question de l'affichage de $body je ne comprend pas bien ce que tu as voulu me demander.
Merci de ta réponse.
Posté : 23 juil. 2006, 15:25
par Truc
Montre les modifications que tu as apporté au formulaire.
Tu as bien 2 champs ayant comme attribut name "Identifiant" et "Mot_de_passe" ?
Posté : 23 juil. 2006, 15:48
par Nephylio
Ok, voici ma page html avec les champs "identifiant" et "mot_de_passe" (je passe le code de la mise en forme bien sûr)
Code : Tout sélectionner
<FORM action="form2mail.php" method=post enctype="text/plain" NAME="Fiche_inscription">
Code : Tout sélectionner
<input type ="text" name="Identifiant" value="" style="width: 175px;">
Code : Tout sélectionner
<input name="Mot_de_passe" type="password" id="Mot_de_passe" style="width: 175px;" size=16>
Code : Tout sélectionner
<input name="SUBMIT" type="image" class="button" style="width: 100px; height: 40px;" tabindex="3" value="SUBMIT" src="A%20trier%202/login_fichiers/pixel.gif" border="0">
et voici mon formulaire php
<?php
$dest="[email protected]";
// on recupere les infos
$referer= getenv("HTTP_REFERER");
$ok=1;
if($ok){
// envoi du resultat par email
$sujet= "Form2Mail de ".$referer;
$body.="Page d'origine : $referer\n";
$body.="\n*** Valeurs resultats ***\n";
$identifiant = $_POST['Identifiant']; // où "Identifiant" est le même nom que l'attribut name
$mot_de_passe= $_POST['Mot_de_passe']; // evite les espaces dans le nom
$body.="Indentifiant : ".$identifiant."\n";
$body.="Mot de passe : ".$mot_de_passe."\n";
echo $body;
$body.="*************************\n";
if(!mail($dest,$sujet,$body)){
print "erreur envoi email <br>";
}
// affiche le html qui suit si succes
?>
<html>
<head><title>Erreur 538</title>
<style type="text/css">
<!--
.Style1 {font-family: Arial, Helvetica, sans-serif}
-->
</style>
</head>
<body>
<span class="Style1"> gagné</a> .</span>
</body>
</html>
<?php
}
// affiche le html qui suit si erreur
//
else{
?>
<html>
<head><title>Erreur de formulaire</title></head>
<body>
<span class="Style1"> Erreur de formulaire
</body>
</html>
<?php
}
?>
Posté : 23 juil. 2006, 16:57
par Truc
Pour finir ceci n'est pas obligatoire sur un envoi de mail par php:
enctype="text/plain"
l'attribut enctype n'est obligatoire que dans le cas d'un envoi de mail par mailto... enlève cet attribut et tout devait aller mieux .
Posté : 23 juil. 2006, 16:59
par dorad
je sais pas si tu as trouvé,
personnellement , chez mon hebergeur la fonction est deactivée et remplacer par la leur . mail();
regardes au cas ou dans leur aide en ligne
Posté : 23 juil. 2006, 17:47
par Invité
Ca y est ! le problème est résolu, j'ai enlevé enctype="text/plain" et tout va mieux!
Par contre j'ai un autre problème que j'ai oublié de mentionner en haut du mail c'est que lors de l'envoi du mail, le formulaire redirige vers une page html dans laquelle il y a normalement marqué "gagné", or sur cette page le texte "Page d'origine
http://www.premiumwanadoo.com/blablabla/login3.htm *** Valeurs resultats *** Indentifiant : Mot de passe : gagné" au lieu d'afficher tout simplement "gagné".
je ne pense pas que se soit quelque chose de très coriace a corriger mais cela m'arragerai si vous pouviez me donner quelques indications pour résoudre cet incident.
Posté : 23 juil. 2006, 18:01
par Truc
un "echo variable" dans une page affiche le contenu de la variable en question... tu as un echo en trop (qui ne servait que pour test)

Posté : 23 juil. 2006, 18:42
par Nephylio
Tout marche à merveille, je te dis un grand merci, grâce à toi j'ai pu résoudre mon problème dans la journée.
Merci encore.
Nephylio
Posté : 13 janv. 2007, 17:20
par trankyl
moi j'ai tenté de reprendre le script de Nephilyo voir si j'avias tjs des erreur pour l'envoi du formulaire et j'ai cette erreur la
Warning: mail() [function.mail]: mail server down in /mnt/135/sdb/1/4/mondelendill/Etendard/form2mail.php on line 30
j'arrive pas a trouver d'ou cela viens la seul infos c'est que je suis chez free je sais pas si c'est cela qui gene????
Posté : 13 janv. 2007, 17:38
par Truc
Ok pour rechercher des solutions mais vaut mieux rester sur ton
sujet initial pour poser d'autres questions (pas de rapport direct)