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 qui envoi un mail à chaque réactualisation de page ! [Fait]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 42
    Par défaut Formulaire qui envoi un mail à chaque réactualisation de page !
    Bonjour (ou bonsoir, comme vous préférez ),
    je suis confronté à un petit souci ennuyeux : j'ai inséré sur l'une de mes pages web un formulaire de contact permettant de m'envoyer un mail. Il fonctionne. Un peu trop bien même, car si je réactualise la page, je reçoit un mail vide Imaginez que quelqu'un actualise la page 50 fois...
    Bref, voici le code PHP (inséré dans ma page avec include) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    $TO = "fiil@orange.fr";
     
    $h  = "From: " . $TO;
     
    $message = "";
     
    while (list($key, $val) = each($HTTP_POST_VARS)) {
      $message .= "$key : $val\n";
    }
     
    mail($TO, $subject, $message, $h);
     
    ?>
    Et le code 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
    <form method=POST action=contact.php >
    <input type=hidden name=subject value=formmail>
     
    <p class="contact_formtxt">Votre nom :</p>
    <input type=text name=Nom size=30>
    <p class="contact_formtxt">Votre adresse e-mail :</p>
    <input type=text name=Mail size=30>
    <p class="contact_formtxt">Sujet :</p>
    <input type=text name=Sujet size=30>
    <p class="contact_formtxt">Message :</p>
    <textarea COLS=50 ROWS=6 name=Message></textarea>
    <br /> 
    <input type=submit value=Envoyer> -
    <input type=reset value=Annuler>
    </form>
    Voilà, je précise qu'il s'agit d'un script trouvé sur le net ( http://www.salemioche.net/script-php-1.php ), ne m'y connaissant pas encore suffisamment en PHP.

    J'ai également supprimé la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Header("Location: http://<URL de la page de remerciement>")
    car elle me renvoyait une erreur.

    Merci par avance pour votre aide

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    il te manque une condition pour la premiere partie : tu ne test pas si ton formulaire à été envoyé

    Le plus simple est de rajouter un champ dans ton formulaire :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="hidden" name="action" value="envoyer" />

    et ensuite, la premiere partie devient :
    Code php : 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
    if( isset($_POST['action']) && $_POST['action'] == "envoyer" ) {
         $TO = "fiil@orange.fr";
     
         $h  = "From: " . $TO;
     
         $message = "";
     
         while (list($key, $val) = each($HTTP_POST_VARS)) {
              $message .= "$key : $val\n";
         }
     
         mail($TO, $subject, $message, $h);
    } 
    ?>

    PS : normalement on test aussi les autres champs apres avoir tester qu'on a bien envoyé le formulaire

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut
    Bonjour,

    Ton soucis ressemble étrangement à celui présenté ici :

    http://www.developpez.net/forums/d69...on-formulaire/

    Personnellement j'utilise une redirection :

    echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=mail_alerte.php\">";

    Ainsi une fois que le formulaire est considéré comme valide suite à la validation des champs, je redirige la page vers une page indiquant à l'utilisateur que tout c correctement déroulé.

    d'ailleur

    Header("Location: http://<URL de la page de remerciement>")
    Cette commande que tu as enlevé remplit ce rôle.

    voilà voilà

    ++

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 42
    Par défaut
    Merci beaucoup pour vos réponses respectives !
    Je vais essayer ça

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 42
    Par défaut
    Avec header, la page me renvoi une erreur :
    Warning: Cannot modify header information - headers already sent by (output started at /var/www/fil.open-web.fr/www/contact.php:10) in /var/www/fil.open-web.fr/www/formulaire_contact/form_mail.php on line 15.


    Sinon connaissez-vous un moyen ou un tuto pour que le sujet et l'expéditeur du message s'affichent directement quand on regarde dans notre boîte, au lieu d'être reportés dans le mail ?
    Avoir quelque chose du style :

    Monsieur X Sujet 25/02/2009 15:20 1.2 ko

    Voilà merci beaucoup encore une fois

  6. #6
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Citation Envoyé par Kazy15 Voir le message
    Avec header, la page me renvoi une erreur :
    Warning: Cannot modify header information - headers already sent by (output started at /var/www/fil.open-web.fr/www/contact.php:10) in /var/www/fil.open-web.fr/www/formulaire_contact/form_mail.php on line 15.


    Sinon connaissez-vous un moyen ou un tuto pour que le sujet et l'expéditeur du message s'affichent directement quand on regarde dans notre boîte, au lieu d'être reportés dans le mail ?
    Avoir quelque chose du style :

    Monsieur X Sujet 25/02/2009 15:20 1.2 ko

    Voilà merci beaucoup encore une fois
    1] pour utiliser header() il ne faut pas qu'il y ai d'affichage effectué
    donc tu ne peux par exemple par écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <html>
    <head></head>
    <body>
    <?php
    header("Location : $url");
    ?>
    </body>
    </html>

    2] il suffit de mettre ce que tu veux dans $subject

Discussions similaires

  1. [OL-2003] Formulaire qui envoi automatiquement un mail
    Par tometoc dans le forum Outlook
    Réponses: 1
    Dernier message: 13/06/2009, 22h38
  2. Réponses: 3
    Dernier message: 12/11/2008, 18h38
  3. Réponses: 11
    Dernier message: 10/07/2006, 16h17
  4. Réponses: 2
    Dernier message: 03/05/2006, 00h12
  5. [Debutant]Formulaire d'envoie de mail
    Par Wyatt dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 31/01/2005, 21h04

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