Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/06/2007, 12h30   #1
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 175
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 175
Points : 28
Points : 28
Par défaut formulaire dans un email et post de variables

Bonjour à tous,

J'ai programmé l'envoi automatique d'un email à partir de code php. L'email est construit en plusieurs lignes, et synthétisé avec
Code :
mail("xxx@free.fr","sujet",$message,$entete)
$message contient un formulaire:
Code :
1
2
3
4
5
6
7
8
9
10
$message.='<form method="post" action="http://xxx.free.fr/test.php">';
$message.='<table border=0 cellpadding=3 width="549" align="center" cellspacing="0" >';
$message.='<tr><td><font face="comic sans ms">Nom :</td>';
$message.='<td><input type="text" name="nom" value="" size=20></td></tr>';
$message.='<tr><td><font face="comic sans ms">Age :</td>';
$message.='<td><input type="text" name="age" value="" size=40></td></tr>';
$message.='</table>';
$message.='<input type="submit" name="  OK  " value=" valide le test  ">';
$message.="</form>";
$message.="</body></html>\n";
Comme vous pouvez le voir, je voudrais qu'à la soumission du formulaire soient postées la variable $nom et $age, que je pourrai utiliser dans la page http://xxx.free.fr/test.php. Seulement voilà, rien n'est posté...

Remarque: j'ai fait le test que si je mets le code du formulaire dans une page formulaire.php, au lieu de l'envoyer par email, les valeurs sont bien postées comme on pouvait s'y attendre.

Y'a-t-il une impossibilité fondamentale à mon problème (on ne peut pas poster à partir d'un email)? proposez-vous une solution de rechange???

Cordialement
Mathieu
Mathieu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2007, 12h43   #2
Rédacteur
 
Avatar de Yoshio
 
Homme
Inscription : septembre 2005
Messages : 1 741
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 1 741
Points : 1 497
Points : 1 497
Comment récupère tu les valeurs dans ton post.php ?
Yoshio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2007, 13h26   #3
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 175
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 175
Points : 28
Points : 28
eh bien, avec ceci:

Code :
$message.='<td><input type="text" name="nom" value="" size=20></td></tr>';
... qui fonctionne quand on le met dans une page htm séparé, et pas dans un email...

est-ce que j'ai bien compris ta question?

Mathieu
Mathieu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2007, 13h39   #4
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 175
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 175
Points : 28
Points : 28
Ah pardon...
j'y ai repensé...
tu voulais dire comment je récupère les valeurs dans la deuxième page?
ben par exemple avec:
Code :
echo "voici le nom posté ".$nom."<BR>";
Et encore une fois, ça marche si le formulaire est dans une page php et pas dans un email...

Mathieu
Mathieu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2007, 13h40   #5
Rédacteur
 
Avatar de Yoshio
 
Homme
Inscription : septembre 2005
Messages : 1 741
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 1 741
Points : 1 497
Points : 1 497
Euh c'est peut être moi qui n'ai pas compris ce que tu fais.

Si j'ai bien compris, tu envoie un email avec un formulaire et tu voudrais récupérer les informations passée au formulaire dans l'email sur ta page test.php

Si c'est le cas dans ta page test.php tu dois récupérer les info via la variable globale $_POST.


Sinon en relisant ton premier post, c'est peut être ton mail qui ne s'affiche pas correctement. Est ce que ton formulaire s'affiche dans le mail ? As-tu mis les bon entête ?

[EDIT]: tu dois passer par $_POST pour récupérer les valeur d'un formulaire (ou $_GET) (ex: $_POST['nom'])
Tu peux lire ceci si tu as des problème pour envoyer un mail version HTML : http://a-pellegrini.developpez.com/tutoriels/php/mail/
Yoshio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2007, 13h57   #6
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 175
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 175
Points : 28
Points : 28
Tu as tout compris...
Et pour répondre à ta question, le formulaire s'affiche bien dans l'email.
Il me semblait que $_POST['nom'] était synonyme de $nom. J'ai tout de même essayé avec $_POST['nom'], mais ça ne fonctionne pas mieux...

Le problème est-il dans l'en-tête? Je t'envoie tout le code correspondant à l'email, peut-être seras-tu en mesure de voir une grossière erreur ou omission qui fait que la variable n'est pas postée..

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$message="<html><BODY BGCOLOR='#FFFFCC'>\n";
$message.='<form method="post" action="http://xxx.free.fr/test.php">';
$message.='<table border=0 cellpadding=3 width="549" align="center" cellspacing="0" >';
$message.='<tr><td><font face="comic sans ms">Nom :</td>';
$message.='<td><input type="text" name="nom" value="" size=20></td></tr>';
$message.='<tr><td><font face="comic sans ms">Age :</td>';
$message.='<td><input type="text" name="age" value="" size=40></td></tr>';
 
$message.='</table>';
$message.='<input type="submit" name="  OK  " value=" valider">';
$message.="</form>";
$message.="</body></html>\n";
 
$entete = "MIME-Version: 1.0\r\n";
$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
$entete .= "From: xxx <xxx@free.fr>\r\n";
 
if(!mail("yyy@free.fr","sujet",$message,$entete)){
 echo "L'email n'a pu être envoyé !";
} else {
 echo "Email a bien été envoyé";
}


Mathieu
Mathieu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2007, 14h03   #7
Rédacteur
 
Avatar de Yoshio
 
Homme
Inscription : septembre 2005
Messages : 1 741
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 1 741
Points : 1 497
Points : 1 497
Ton mail à l'air d'être correct, l'erreur ne doit pas venir de la.

On peut voir ta page test.php

Enleve les espaces de
Je sais pas si ca passe ca.
Yoshio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2007, 14h15   #8
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 175
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 175
Points : 28
Points : 28
voici, comme je l'ai déjà écrit, ce qui devrait permettre de tester:

Code :
1
2
echo "voici le nom posté ".$_POST['nom']."<BR>";
echo "voici le age posté ".$age."<BR>";
aucun des deux (avec ou sans le $_POST) ne fonctionne...

Mathieu
Mathieu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2007, 14h34   #9
Rédacteur
 
Avatar de Yoshio
 
Homme
Inscription : septembre 2005
Messages : 1 741
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 1 741
Points : 1 497
Points : 1 497
Bon étant donné que je vois pas pourquoi ton code ne marche pas j'ai tester un peu et avec ce code ça marche parfaitement :

Script qui envoie le mail :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
// To
$to = 'adresse@gmail.com';
 
// Subject
$subject = 'Developpez.com - Test Mail';
 
// Headers
$headers = 'Mime-Version: 1.0'."\n";
$headers .= 'Content-type: text/html; charset=utf-8'."\n";
$headers .= "\r\n";
 
// Message
$msg = '<form action="http://www.site.info/test.php" method="post">
<input type="text" name="nom" />
<input type="submit" name="submit" value="OK" />
</form>';
 
// Function mail()
mail($to, $subject, $msg, $headers);
 
?>
test.php :
Code :
1
2
3
4
5
<?php
 
var_dump($_POST);
 
?>
EDIT : tester avec gmail.
[HS] Je vais etudier mnt lol [/HS]
Yoshio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2007, 15h11   #10
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 175
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 175
Points : 28
Points : 28
ça ne fonctionne pas chez moi...
pourtant j'ai fait un copier-coller de ton code!

il doit y avoir un autre problème...

D'autre part, j'ai remarqué que si j'écris à une adresse voila par exemple, la page ne s'affiche même pas quand on appuie sur le bouton

voilà, si tu as des idées...
étudie-bien
Mathieu
Mathieu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2007, 15h14   #11
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 175
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 175
Points : 28
Points : 28
peut-être que ça tient à l'adresse à laquelle j'écris en fait...

avec mon adresse free, relevée sous Mozilla Thunderbird, la page s'affiche, mais la variable n'est pas postée...

enfin je sais pas, toi peut-être que c juste avec ton adresse gmail que ça fonctionne!
Mathieu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2007, 15h43   #12
Rédacteur
 
Avatar de Yoshio
 
Homme
Inscription : septembre 2005
Messages : 1 741
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 1 741
Points : 1 497
Points : 1 497
Je vient de tester sur hotmail et ca passe aussi.
Yoshio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2007, 22h15   #13
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 175
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 175
Points : 28
Points : 28
hello hello

finalement je fais un lien vers une page web... c plus simple
peut-être que je reviendrai plus tard à la première solution, on verra...

Merci pour tout

Mathieu
Mathieu72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h44.


 
 
 
 
Partenaires

Hébergement Web