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 :

Envoyer un e-mail


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut Envoyer un e-mail
    Bonjour,

    Ca fait bien... Deux heures que je me prend la tête avec un problème de codage. Voila, je suis en train de faire un formulaire qui envoie les réponses directement sur ma boite mail. Le problème, c'est que lorsque je clique sur envoyé, j'ai l'erreur suivante qui s'affiche :

    Warning: mail() [function.mail]: Invalid mail. to = [nnnn] in /mnt/138/sdc/7/b/durmstrangp/Devoirs/MN/traitement.php on line 11
    Je me tourne donc vers vous pour m'éclairer un peu...

    Voici mon fichier html :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                           "http://www.w3.org/TR/REC-html40/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Devoir de Magie Noire</title>
     
    </head>
    <body>
    <form name='formulaire' action='traitement.php' method='post' onSubmit="return verification()">
     
    <div style="padding-left: 10px;"><br>
     
     
    <b>Pseudo</b>&nbsp;&nbsp;<input name='pseudo' type='text' size='20'>
    &nbsp;&nbsp;&nbsp;<b>Lign&eacute;e</b>&nbsp;&nbsp;<input name='lignee' type='text' size='20'><br>
    <b>Email</b> &nbsp;&nbsp;<input name='email' type='text' size='20'></td></tr><br><br>
     
     
     
    <b>Question 1</b>
    <p><input name='question1' type='radio' value='reponse 1'>R&eacute;ponse 1<br>
    <input name='question1' type='radio' value='reponse 2'>R&eacute;ponse 2<br>
    <input name='question1' type='radio' value='reponse 3'>R&eacute;ponse 3</p>
     
    <b>Question 2</b>
    <p><input type='checkbox' name="question2" value='reponse 1'/>R&eacute;ponse 1<br>
    <input type='checkbox' name="question2" value='reponse 2'/>R&eacute;ponse 2<br>
    <input type='checkbox' name="question2" value='reponse 3'/>R&eacute;ponse 3<br></p>
     
    <b>Question 3</b>
    <p>     <select name='question3'>
               <option value='R&eacute;ponse 1'>R&eacute;ponse 1</option>
               <option value='R&eacute;ponse 2'>R&eacute;ponse 2</option>
               <option value='R&eacute;ponse 3'>R&eacute;ponse 3</option>
           </select>
       </p>
     
    <b>Question 4</b>
    <p><textarea name='question4' cols='50' rows='5'></textarea></p>
     
    <input name='annuler' type='reset' value='Annuler'>
    <input name='soumettre' type='submit' value='Envoyer'>
     
    </div>
     
     
     
    </form>
    </body>
    </html>
    Et mon fichier html :
    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
     
    <?php
    $adresse="n.b.remy@gmail.com";
    $from="From: $pseudo $lignee <$email>\r\n";
    $from.="Reply-To: $pseudo $lignee <$email>\n";
    $from.="X-priority:3\n";
    $texte="<html>";
    $texte.="$question1,$question2,$question3,$question4";
    $texte.="</html>";
    $from.="MIME-Version: 1.0\r\n";
    $from.="Content-Type: text/html";  
    if (mail($pseudo,$lignee,$from))
    echo("<br><h2>Devoir envoy&eacute;.</h2>");
    else
    echo("<br>Votre devoir n'a pas pu &ecirc;tre envoy&eacute;. Veuillez r&eacute;essayer ultérieurement. Merci. ");
    ?>
    Merci et bonne soirée!

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    ta variable $lignee n'est pas définie

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut
    Il me semble que si...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name='lignee' type='text' size='20'>

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Par défaut
    C'est $_POST['lignee'], à moins que tu ait activé register_globals qui est déconseillé.

  5. #5
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Non, pour récupérer cetts valeur dans ton fichier php, il faut que tu la recuperes dans ton tableau $_POST

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $lignee = $_POST['lignee'];

    Mais il faut également que tu traites cette valeurs pour empêcher notamment les injection SQL

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    Non, pour récupérer cetts valeur dans ton fichier php, il faut que tu la recuperes dans ton tableau $_POST

    Code php :

    $lignee = $_POST['lignee'];



    Mais il faut également que tu traites cette valeurs pour empêcher notamment les injection SQL
    Heh, un utilisateur aura du mal à faire une injection s'il n'utilise pas mysql.

  7. #7
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Citation Envoyé par sachav Voir le message
    Heh, un utilisateur aura du mal à faire une injection s'il n'utilise pas mysql.

    je te conseille vivement de revoir tes standards de programmation

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    je te conseille vivement de revoir tes standards de programmation
    Non mais faut arrêter avec la paranoïa du $_POST, comment tu veux qu'un utilisateur injecte quoi que ce soit s'il n'utilise pas MySQL?

  9. #9
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    en rentrant tout simplement du SQL dans tes champs et BAM plus de base

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    en rentrant tout simplement du SQL dans tes champs et BAM plus de base
    Faudrait déjà qu'il en ait une...

    Et comment veux tu que ton SGBD exécute ce code ?
    Il n'y a ni mysql/pg_connect(), ni mysql_query, ni odbc_, ni PDO dans son code.

  11. #11
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    renseignes toi sur les injections SQL, tu as de grosses lacunes dessus et ton code est très vulnérable

  12. #12
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    renseignes toi sur les injections SQL, tu as de grosses lacunes dessus et ton code est très vulnérable
    LOL, vas-y, je te défie d'injecter quoi que ce soit avec le code qu'il a fourni.

  13. #13
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Aucune difficulté et pas de temps à perdre vas voir si wikipedia

    Mais je réitère mon conseil : change ton code surtout pour tes pages contenant du SQL (connexion, inscription etc)

  14. #14
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    Aucune difficulté et pas de temps à perdre vas voir si wikipedia

    Mais je réitère mon conseil : change ton code surtout pour tes pages contenant du SQL (connexion, inscription etc)
    Bah voilà on est bien d'accord, moi je parlais de cette page là uniquement. Aucune utilité à la protéger, je conseillerais même des stripslashes() pour éviter d'avoir des backslash avant les accents dans ton mail.
    Sinon, sais tu s'il utilise (My)SQL?
    Alors oui si il utilise ce code pour des pages où il y a des connexions avec un SGBD, éclate toi et protège... sinon, aucun intérêt.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut
    Je vous cacherais pas que j'ai eu du mal à vous suivre étant donné que je suis débutant en php... xD
    Bref. J'ai modifié mon code php pour définir donc toutes variables :

    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
    <?php
    $adresse="n.b.remy@gmail.com";
    $lignee = $_POST['lignee'];
    $pseudo = $_POST['pseudo'];
    $email = $_POST['email'];
    $question1 = $_POST['question1'];
    $question2 = $_POST['question2'];
    $question3 = $_POST['question3'];
    $question4 = $_POST['question4'];
    $from="From: $pseudo $lignee <$email>\r\n";
    $from.="Reply-To: $pseudo $lignee <$email>\n";
    $from.="X-priority:3\n";
    $texte.="$question1,$question2,$question3,$question4";
    $from.="MIME-Version: 1.0\r\n";
    $from.="Content-Type: text/html";  
    if (mail($adresse,$pseudo,$lignee,$from))
    echo("<br><h2>Devoir envoy&eacute;.</h2>");
    else
    echo("<br>Votre devoir n'a pas pu &ecirc;tre envoy&eacute;. Veuillez r&eacute;essayer ultérieurement. Merci. ");
    ?>
    Donc, ca fonctionne. Je n'ai pas de message d'erreurs, par contre, le mail est vide. Du moins, il n'y a que ce qui renvoi à la var lignée. --'

  16. #16
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Par défaut
    Le troisième paramètre de la fonction mail() désigne le message à envoyer.
    Et saches que l'opérateur de concaténation est le point. Et pour faire un retour à la ligne, utilise "\r\n" entre guillemets doubles, ou bien un saut à la ligne entre guillemets simples.

    Avec ça, tu devrais t'en sortir. Un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    mail($adresse, $pseudo,
    'Lignee: ' . $lignee . '
    Pseudo: ' . $pseudo
    );
    ?>

  17. #17
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    @sachav : désolé je croyais que tu étais l'auteur du sujet
    @anouza : désolé je croyais parler à l'auteur du sujet


  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut
    Ce n'est pas grave! En tout cas de mon coté, tout est ok désormais! Encore merci et bonne soirée!

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut
    En fait. J'ai un autre problème, lorsque je recoi le mail, les é, à etc... sont transformés en caractères étranges. Comment je peux y remédier ?

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut
    Personne ? --'

Discussions similaires

  1. Réponses: 135
    Dernier message: 15/12/2006, 14h56
  2. Envoyer un e-mail à partir d'un formulaire?
    Par Nonette dans le forum Access
    Réponses: 2
    Dernier message: 19/07/2006, 22h47
  3. Envoyer un e-mail
    Par mouloudéen dans le forum Access
    Réponses: 1
    Dernier message: 30/10/2005, 13h05
  4. [VB.NET] Envoyer des e-mails !
    Par Ludog35 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 26/10/2005, 17h50
  5. [JBOSS] Envoyer un e-mail
    Par webspeak dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 05/03/2005, 21h59

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