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 :

header() après envoi de mail


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de Zalawy
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 137
    Par défaut header() après envoi de mail
    Bonjour

    J'ai consulté sur le site concernant le problème que j'ai rencontré : je voulais retourner à l'accueil après avoir envoyé un mail et j'ai pris la fonction header en vain

    Voici un bout de code que j'ai testé et ça n'a pas marché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(mail($destinataire, $objet, $message, $headers)){
    		header("Location: accueil.php");
    	}else {
    		echo "<p\">Le message n'a pas pu être envoyé </p>";
    	}
    Connaissez-vous un autre code pour retourner à une page principale après avoir envoyé un mail?
    Merci

  2. #2
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut
    Peux-tu préciser le "ça ne marche pas" ? Juste pas de redirection, un message d'erreur, ??? As tu regardé avec un outil de déboguage comme Firebug si le navigateur faisait bien la redirection (onglet réseau) ? L'url "accueil.php" est-elle correcte (=> si tu la tapes toi-même dans ton navigateur, que se passe-t-il) ?
    A priori, ton code devrait passer.
    Tu devrais aussi pouvoir faire un exit après le header, car en général, rien d'autre à faire après une redirection (en tout cas, faut pas envoyer de contenu dans la réponse HTTP quand on fait une redirection).

  3. #3
    Membre confirmé Avatar de Zalawy
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 137
    Par défaut
    Merci pour ta réponse. Je voulais dire que je voulais faire la redirection automatique après avoir envoyé un mail
    Alors j'ai essayé la fonction header et ça ne marche pas => j'ai cliqué et ça n'affiche pas le message d'erreur mais ça ne ramène pas à la page d'accueil,ça reste la même page où j'ai envoyé un mail.
    Je viens de trouver ce code ci-dessous pour la redirection automatique vers la page principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (mail){ 
           echo '<META HTTP-EQUIV="Refresh" Content="0; URL=accueil.php">';
        }  else {
           return false;
        }

  4. #4
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut
    Bizarre bizarre tout ça...
    Tu as marqué le problème comme résolu, mais il a surtout été contourné selon moi !

    La redirection avec la balise meta est pas jolie... C'est LE moyen à éviter pour faire les redirections (voir ici).

    N'y aurait-il pas, par hasard, du code HTML envoyé AVANT d'appeler la méthode header ? Si oui, tu devrais avoir un warning PHP qui te le dit (mais peut être as-tu désactivé les warnings...).

  5. #5
    Membre confirmé Avatar de Zalawy
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 137
    Par défaut
    Merci pour ta réponse, oui,j'ai résolu car ce code a fonctionné... Et oui,je trouve aussi que la redirection avec la balise meta est moins efficace car mon boss m'a dit qu'il l'a trouvé chez un forum et ça a marché... et je ne vois pas un autre code pour faire ça. En lisant la redirection Web en html et http, faut-il mettre la balise meta entre la balise head pour retourner la page d'accueil?
    D'ailleurs,j'ai essayé d'utiliser la fonction header avant html que indique l'explication sur la redirection en php en vain C'est la première fois que j'utilise ce code

  6. #6
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut Header already sent ?
    Oui la balise <meta> doit être sur une page HTML classique, dans la balise <head>. Les navigateurs sont tolérants, donc ça passe quand même, mais bon...

    Mais tu ne m'as pas dit si tu avais activé les warnings de PHP. Si tel n'est pas le cas, tu peux le faire soit en code (au tout début), soit dans le php.ini (http://php.net/manual/fr/function.error-reporting.php. Bien sûr, à mettre uniquement sur l'environnement de développement.
    Si c'est ce que je crois, tu auras certainement un message d'avertissement du genre : "Warning: Cannot modify header information - headers already sent". Des tas de gens se font avoir avec ça, tu en fais peut être partie.

    Il faut vraiment que tu puisses vérifier si le "header : Location" est envoyé avant tout caractère du corps de la réponse. Même un espace blanc, un saut de ligne etc (et c'est vite arrivé en PHP).
    Je l'ai déjà dit, mais je le répète, un bon débogueur genre firebug te le diras, en regardant quelle a été la réponse HTTP (onglet réseau).

    Assure toi bien de vérifier si ce point avant de chercher d'autres pistes, si tu as l'intention de faire du code propre (et si comme moi, tu n'aimes pas laisser de côté les trucs que tu comprends pas ).

  7. #7
    Membre confirmé Avatar de Zalawy
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 137
    Par défaut
    Aie,désolé pour polluer ce post résolu
    Pour répondre à ta question,non je n'ai pas activé les warnings de PHP car j'ai mis une condition si l'envoi d'un message est effectué et cela a fini par la redirection à la page principale sinon,ça renvoie une erreur.
    D'ailleurs,j'ai testé le code que j'ai trouvé ton lien et ça n'a pas rapporté les erreurs,bizarre
    Pour activer les erreurs de PHP un peu comme ce code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error_reporting(E_ALL);
    c'est bien cela? Car je ne connais pas beaucoup l'activation des erreurs....
    Si oui,je l'ai testé et ça ne rapporte pas des erreurs

  8. #8
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut
    Pour moi le poste est pas vraiment résolu, donc ce n'est pas tout à fait de la pollution !

    Vérifie aussi la directive "display_errors" et éventuellement "error_log" (http://php.net/manual/fr/errorfunc.configuration.php).
    Il se peut que ce soit pour ça que ça n'affiche rien...

    Et que dit notre ami Firebug ?

  9. #9
    Membre confirmé Avatar de Zalawy
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 137
    Par défaut Activer les erreurs de php
    Citation Envoyé par Climoo Voir le message
    Pour moi le poste est pas vraiment résolu, donc ce n'est pas tout à fait de la pollution !

    Vérifie aussi la directive "display_errors" et éventuellement "error_log" (http://php.net/manual/fr/errorfunc.configuration.php).
    Il se peut que ce soit pour ça que ça n'affiche rien...

    Et que dit notre ami Firebug ?
    Alors,j'ai testé en local et j'ai finalement réussi trouver le résultat des erreurs car je les ai mis au début de script,non le milieu de script
    Alors j'ai eu le résultat :
    [date heure lieu] PHP Warning: mail(): Failed to connect to mailserver at &quot;172.0.0.1&quot; port 25, verify your &quot;SMTP&quot; and &quot;smtp_port&quot; setting in php.ini or use ini_set() in C:\Program Files\EasyPHP-DevServer-14.1VC9\data\localweb\contact.php on line 73

    [date heure lieu] PHP Notice: Use of undefined constant mail - assumed 'mail' in C:\Program Files\EasyPHP-DevServer-14.1VC9\data\contact.php on line 84
    Donc,après que j'ai regardé le problème de la ligne 73,ça vient la fonction du mail (en rouge) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $headers = 'MIME-Version: 1.0' . "\n";
    $headers .='From: <emetteur@gmail.com>' ."\n";
    $headers .='Content-type: text/plain; "charset=iso-8859-1"' ."\n";
    $headers .='Reply-to: <emetteur@gmail.com>' ."\n"; 
    $headers .='Content-Transfer-Enconding: 8bit'."\n";
    $objet = "Test";
    $destinataire = "destinataire@gmail.com";
    $message= "coucou";
    
    mail($destinataire, $objet, $message, $headers)
    Et pour la ligne 84 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<META HTTP-EQUIV="Refresh" Content="0; URL=index.php">';
    même ça a fonctionné mais ça envoie des erreurs....

  10. #10
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut
    Voilà qui est étrange !
    Déjà, apparemment, tes mails ne partent pas (vu le message d'erreur : impossible de se connecter au serveur SMTP).

    Le message correspondant à la ligne 84 n'a aucun sens ! Tu n'as pas utilisé de constante "mail" à cette ligne. Ca ne peut pas venir de là. Tu es sûr ?

    Et aussi, pas de point virgule à la fin de ton instruction "mail" ligne 73. Normal, pas normal?

    On est pas plus avancé avec ton problème de redirection !

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

Discussions similaires

  1. Macro fermer sans enregistrer après envoi par mail
    Par pheonix00fr dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/10/2014, 11h39
  2. Erreur header après envoi sur bdd
    Par Wazisisgood dans le forum Langage
    Réponses: 12
    Dernier message: 30/05/2012, 12h57
  3. [PHP 5.3] sortie de formulaire apres envoi du mail
    Par viavba dans le forum Langage
    Réponses: 10
    Dernier message: 24/11/2011, 16h18
  4. [OL-2010] Fichier en lecture seule apres envoi par mail
    Par Maxdu59 dans le forum Outlook
    Réponses: 3
    Dernier message: 25/02/2011, 17h36
  5. [WD-2000] Word: problème de reception de lien après envoi de mail
    Par lediz dans le forum Word
    Réponses: 5
    Dernier message: 26/04/2009, 00h49

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