Traitement php et envoi par mail 1formulaire

Bonjour,
J'ai trouvé ce code sur un site, il s'agit du code a mettre sur la page du traitement d'un formulaire (page en .php)
C'est lui :

<?php
$exp = $_POST['mail'];
$objet = stripslashes($_POST['objet']);
$msg = stripslashes($_POST['msg']);
$envoi=mail("*******@yahoo.fr", $objet, $msg,"From: $exp\r\n"."Reply-To: $exp\r\n");
if($envoi) echo"Le mail a bien été envoyé !";
else echo"L'envoi a échoué, merci de renouveller l'opération !";
?>

mon problème : Je reçois bien le mail dans ma boite mail, mais le contenu de ce mail est blanc.
Donc je recherche "ce qu'il faut écrire" de plus dans ce code pour récupérer ce que l'urtilisateur a écrit précedement avant de cliquer sur envoyer, et que je vois ce qu'il a écrit dans mon mail.Enfin bref, pour que ce soit un vrai formulaire :)
Et aussi, je me demandais à quoi servait cette ligne : $msg = stripslashes($_POST['msg']);
Merci d'avance à tous !

PS : Je m'en fou si le contenu n'est pas vérifié, si les champs sont tous bie remplis, car comme s'est mon prmier Php j'est peur de m'embrouiller davantage ....
.
Configuration: Windows XP
Firefox 2.0.0.9

13 réponses

  1. Salut!

    ton message blanc... et bien c'est $msg! dans ton formulaire ajoute ça pour le message:

    <input type="text" name="msg" id="msg">

    ou

    <textarea name="msg"></textarea>

    C'est le plus important.. Après, j'ai modifié un peu ton script pour avoir quelquechose d'un peu plus net, tu peux copier/coller, ça devrait marcher sans souci par contre là oui, tu dois renseigner les champ si non remplace la ligne if($exp != "" && $ob...) par if($msg != "") pour au moins qu'il y ait un message!

    <?php
    $exp = $_POST['mail']; ### adresse de l'expéditeur
    $objet = stripslashes($_POST['objet']); ### sujet du mail
    $msg = stripslashes(nl2br(htmlspecialchars($_POST["msg"]))); ### message du mail!

    if($exp != "" && $objet != "" && $msg != "")
    {
    $headers .= "Content-type: text/html; charset=utf-8\r\n";
    $headers .= "From: $exp <$exp>\r";
    $body = "<html><body>$msg</body></html>";
    mail("ton_mail@yahoo.fr", "$objet", "$body", "$headers");
    echo"Le mail a bien été envoyé !";
    exit;
    }else{
    echo"Echec de l'envoi du mail!";
    exit;
    }
    ?>

    Bon dév!

    ~W~
    1
    1. Contributeur
      re,

      as-tu regardé celui de CCM ?
      il est prêt à l'emploi !!!
      0
      1. Je viens de regarder ccm , ça ne marche pas !
        Comment faire ?
        0
        1. Merci wenijah !
          Mais je ne veut pas voir forcement que la zone de texte msg mais tout ce qui y est comprit dans les balises form de mon formulaire.

          Sinon, je vais essayer ton code maintenant !
          0
          1. Re !
            Je vient de tester, mais la page me dit : Echec de l'envoi du mail
            Que dois-je paramétrer pour que ça marche ?
            0
            1. Okkk je vois.. En bref:

              Sur ta page de fomulaire :

              tous les <input type="??" name="nom_du_champ"> sont le champs de formulaire que tu vas envoyer

              Sur ta page d'envoi

              tous les $?? = $_POST["??"]; correspondent aux champs de formulaire, $_POST signifie que tu les récupères depuis un formulaire de type POST (cf. method="post")

              donc pour chaque champ de formulaire, tu as un name spécifique et pour chaque champ de formulaire tu as, sur la page d'envoi, un $_POST spécifique.. Après tu les gères comme tu veux..

              Pour ton formulaire, à chaque fois que tu veux ajouter un champ, peut importe la sorte, tu dois le renseigner et lui donner un nom, Exemple:

              ton formulaire.php

              <form method="post" action="envoi.php">
              <input type="text" name="exp"><br> ### dans ton formulaire actuel, c'est l'adresse de l'expéditeur
              <input type="text" name="objet"><br> ### toujours dans ton form actuel, c'est l'objet du mail
              <textarea name="msg"></textarea><br> ### encore dans ton form actuel, c'est le message
              <input type="text" name="mon_nouveau_champ_1"><br> ### ça c'est un nouveau truc, ce que tu veux
              <input type="text" name="mon_nouveau_champ_2"><br> ### idem
              <input type="text" name="mon_nouveau_champ_3"><br> ### idem
              <input type="submit" value="envoyer">
              </form>

              ta page envoi.php

              <?php
              $exp = $_POST['mail']; ### adresse de l'expéditeur
              $objet = stripslashes($_POST['objet']); ### sujet du mail
              $msg = stripslashes(nl2br(htmlspecialchars($_POST["msg"]))); ### message du mail

              $nouveau_champ_1 = $_POST['mon_nouveau_champ_1']; ### le nouveau truc que tu récupères

              $nouveau_champ_2 = $_POST['mon_nouveau_champ_2']; ### le 2nd nouveau truc que tu récupères

              $nouveau_champ_3 = $_POST['mon_nouveau_champ_3']; ### le 3e nouveau truc que tu récupères

              if($exp != "" && $objet != "" && $msg != "")
              {
              $headers .= "Content-type: text/html; charset=utf-8\r\n";
              $headers .= "From: $exp <$exp>\r";
              $body = "<html>
              <body>
              Message : $msg
              Nouveau champ 1 : $nouveau_champ_1
              Nouveau champ 2 : $nouveau_champ_2
              Nouveau champ 3 : $nouveau_champ_3

              ### Ici, tu peux rajouter tout ce que tu veux... tu peux reporter tout les $... = $_POST["..."];

              </body>
              </html>";
              mail("ton_mail@yahoo.fr", "$objet", "$body", "$headers");
              echo"Le mail a bien été envoyé !";
              exit;
              }else{
              echo"Echec de l'envoi du mail!";
              exit;
              }
              ?>

              Tu vois le truc?
              0
              1. On va faire plus simple...

                Copie et colle les 2 codes suivants et crées les pages que je t'indiquerai, ok?

                A créer : formulaire.html

                Copie et colle :

                --- début du 1er code ---

                <html>
                <head>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                <title>Formulaire</title>
                </head>
                <body>

                <form method="post" action="envoi.php">
                <input type="text" name="mail" value="essai@ccm.com"><br>
                <input type="text" name="objet" value="un mail!"><br>
                <textarea name="msg">Ton message</textarea><br>
                <input type="submit" value="envoyer">
                </form>

                </body>
                </html>

                --- fin du 1er code ---

                A créer : envoi.php

                Copie et colle :

                --- début du 2e code ---

                <?php
                $exp = $_POST['mail']; ### adresse de l'expéditeur
                $objet = stripslashes($_POST['objet']); ### sujet du mail
                $msg = stripslashes(nl2br(htmlspecialchars($_POST["msg"]))); ### message du mail!

                if($exp != "" && $objet != "" && $msg != "")
                {
                $headers .= "Content-type: text/html; charset=utf-8\r\n";
                $headers .= "From: $exp <$exp>\r";
                $body = "<html><body>$msg</body></html>";
                mail("*******@yahoo.fr", "$objet", "$body", "$headers");
                echo"Le mail a bien été envoyé !";
                exit;
                }else{
                echo"Echec de l'envoi du mail!";
                exit;
                }
                ?>

                --- fin du 2e code ---

                Et là, ça fonctionne ;)
                0
                1. Ui je vois !
                  Je vais préparer tout ça !

                  En tout cas énorme merci !

                  Nico
                  0
                  1. Bouhhh
                    Je n'ai vraiment pas de chance ^^
                    Avec la solution que tu m'as donnée ci-dessus, la page de traitement php affiche :
                    Parse error: syntax error, unexpected '@' in /mnt/125/sda/6/8/*****/envoi.php on line 11
                    0
                    1. Salut!

                      Le problème était le "*****@yahoo.fr" et je l'ai fixé... Télécharge le fichier ci-dessous, c'est le formulaire et il fonctionne ;)

                      Formulaire: http://deposit.mysharingbox.com/426/MGpdpI/Form_graphox.rar

                      Bon dév!
                      0
                      1. Il me dit ça : \r"; $body = "$msg"; mail($dest, "$objet", "$body", "$headers"); echo"Le mail a bien été envoyé !"; exit; }else{ echo"Echec de l'envoi du mail!"; exit; } ?>
                        0
                        1. T'as téléchargé le fichier rar? Tout fonctionne =)
                          0
                          1. Ben non ça ne marche pas ! il met ça \r"; $body = "$msg"; mail($dest, "$objet", "$body", "$headers"); echo"Le mail a bien été envoyé !"; exit; }else{ echo"Echec de l'envoi du mail!"; exit; } ?>

                            A+
                            0