IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

formulaire dans un email et post de variables


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    mail("xxx@free.fr","sujet",$message,$entete)
    $message contient un formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Par défaut
    Comment récupère tu les valeurs dans ton post.php ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Par défaut
    eh bien, avec ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Par défaut
    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/

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  7. #7
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Par défaut
    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.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Par défaut
    voici, comme je l'ai déjà écrit, ce qui devrait permettre de tester:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  9. #9
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
     
    var_dump($_POST);
     
    ?>
    EDIT : tester avec gmail.
    [HS] Je vais etudier mnt lol [/HS]

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Par défaut
    ç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

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Par défaut
    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!

  12. #12
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Par défaut
    Je vient de tester sur hotmail et ca passe aussi.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajouter un Formulaire dans une email
    Par Stouille89 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 30/10/2007, 14h51
  2. formulaire dans un email
    Par Mathieu72 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 29/07/2007, 19h50
  3. Réponses: 2
    Dernier message: 26/07/2006, 17h52
  4. [SQL] Récupérer des variables de formulaire dans une requête SQL
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/11/2005, 19h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo