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 :

[Mail] Envoi de mail : rediriger sur une page de confirmation d'envoi


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 200
    Points : 66
    Points
    66
    Par défaut [Mail] Envoi de mail : rediriger sur une page de confirmation d'envoi
    Bonsoir à tous/tes,

    Comment faire pour rediriger l'internaute sur une page quelconque après envoi de mail (HTML) par un formulaire ?
    J'ai beau chercher différentes solutions, ça ne marche pas...

    voici le code pour info:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $destinataire = "mail@free.fr";
    $expediteur   = $_POST['email'];
    $reponse      = $expediteur;
     
    echo "Ce script envoie un mail au format HTML à $destinataire";
    $codehtml = "nom : ".$_POST['nom'];
    $codehtml .= "<br />email : ".$_POST['email'];
    $codehtml .= "<br /><br />sujet : ".$_POST['titre'];
    $codehtml .= "<br />".$_POST['commentaires'];
    $codehtml .= 
    "<html><body><br />" .
    "&rsaquo; <a href=\"mailto:".$_POST['email']."\">répondre à ". $_POST['nom']."</a>" .
    "</body></html>";
    mail($destinataire, "demande d'infos", $codehtml, "From: $expediteur\r\nReply-To: $reponse\r\nContent-Type: text/html; charset=\"iso-8859-1\"\r\n");
    Merci aux bonnes âmes de vos idées / pistes, en attendant je reste bloqué mais ne désespère pas
    merci a++

  2. #2
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    La fonction mail revoie 2 valeurs : TRUEou FALSE, selon que le mail a été envoyé ou non....

    Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $tempmail=mail(.........);
     
    if(tempmail==true){
    header("Location: index.php");
    else{
    header(Location: false.php');
    }
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 200
    Points : 66
    Points
    66
    Par défaut
    Merci de ta réponse Viviboss, j'ai intégré ta suggestion au script mais voici ce que ça donne :
    Warning: Cannot modify header information - headers already sent by (output started at...
    je pense pourtant l'avoir bien intégré:
    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
    $destinataire = "mail@free.fr";
    $expediteur   = $_POST['email'];
    $reponse      = $expediteur;
     
    $codehtml = "nom : ".$_POST['nom'];
    $codehtml .= "<br />email : ".$_POST['email'];
    $codehtml .= "<br /><br />sujet : ".$_POST['titre'];
    $codehtml .= "<br />".$_POST['commentaires'];
    $codehtml .= 
    "<html><body><br />" .
    "&rsaquo; <a href=\"mailto:".$_POST['email']."\">répondre à ". $_POST['nom']."</a>" .
    "</body></html>";
     
    $tempmail = mail($destinataire,
         "demande d'infos",
         $codehtml,
         "From: $expediteur\r\nReply-To: $reponse\r\nContent-Type: text/html; charset=\"iso-8859-1\"\r\n");
     
    if ($tempmail==true)
      header("Location: http://www.rsite.com/contact_confirm.php");
    else 
      header("Location: http://www.site.com");
    qu'est-ce qui ne va pas? je ne vois rien d'anormal....

  4. #4
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    ....Ce message d'erreur signifie que quelque chose est renvoyé au navigateur AVANT tes headers..... Les headers nécessitent AUCUN affichage avant, même espace blanc....

    Essai de changer ton script de façon à ce que tes traitements PHP soient en tête, et les affichages en bas (pages HTML, etc...).

    Si tu n'y arrive pas, il faudra feinter : notamment avec des "echo" et messages d'erreurs, exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $tempmail=mail(.........);
     
    if(tempmail==true){
    echo "reussi";
    else{
    echo "pas bon";
    }
    D'ailleur, avec cette méthode tu ourras déjà vérifier que le tout marche...
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 200
    Points : 66
    Points
    66
    Par défaut
    le tout marche en effet, j'ai juste des difficultés avec le header..
    merci pour tes conseils, je vais les appliquer et reviendrai demain pour raconter comment ça s'est passé.
    merci encore

  6. #6
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    De rien....

    N'oublie pas que pour que les headers fonctionnent, tu ne dois rein afficher avant.

    Une bonne méthode (y en a d'autres...) consiste à séparer les sources de traitements d'avec la présentation, et si un traitement est lié à un affichage, il vaut mieux mettre le traitement en tête.... Ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    //traitments de mails....
    //nom de la page : mail.php
    ?>
    sera plutot appelé par un formulaire en POST :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    //Page contenant le formulaire d'envoi
    ?>
    <form action="mail.php" method="post">
    <input......
    </form>
    On préfèrera ce genre de méthode, plus souple, que de mettre le code de traitement dans la même page que le formulaire, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    //traitement mails....
    ?>
    <form action="<?php $_SERVER['php_self'] ?>" method="post">
    <input.....
    </form>
    Je trouve que c'est pas claire, et ca pousse aux erreurs.... Il ne faut le faire que lorsque on ne peut pas faire autrement...

    Bonne chance !!!
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 200
    Points : 66
    Points
    66
    Par défaut
    hello!
    désolé, je reviens à la charge apres tout ce temps, petites contrariétés...

    Merci de ton aide Vivien, mais je n'y arrive toujours pas
    j'ai pourtant placé le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Header("Location: http://www.site.com/avocat_affaires/contact_confirm.php");
    avant tout traitement...mais toujours la même erreur :
    Warning: Cannot modify header information - headers already sent by (output started at...
    c'est comme si il se débroullait pour interpréter le header location après tout le reste !
    comprend pas, pourtant ça ne doit pas être trop diffcile de lui dire "va à cette page" une fois que le mail est envoyé...
    que faire ?

    merci par avance

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 981
    Points
    2 981
    Par défaut
    On sait jamais mais les espaces blancs en fin de fichier apres un ?> ca compte aussi. Donc si tu as fait un include, vérifie ce fichier la aussi.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 200
    Points : 66
    Points
    66
    Par défaut
    Bonjour à tous,
    malheureusement ce n'est pas ça...mais je prend note des espaces blancs après le ?>
    J'ai passé la soirée d'hier à essayer d'autres manières d'afficher la page de confirmation d'envoi, sans succès.
    Je persévère mais ne désespère pas !

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/12/2007, 09h52
  2. Réponses: 6
    Dernier message: 09/01/2007, 15h12
  3. [FPDF] Envoi de mail au format PDF, à partir d'une page PHP
    Par King_T dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 02/05/2006, 00h21
  4. [Javascript] rediriger sur une page en javascript
    Par tioseb dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 15/02/2006, 15h55
  5. comment rediriger sur une page html en fonction de la langue
    Par pierrot10 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 10/08/2005, 12h42

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