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 :

Redirection avec un entête


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 178
    Points : 80
    Points
    80
    Par défaut Redirection avec un entête
    Bonjour , j'ai un soucis avec une redirection header location.
    J'ai l'erreur Warning: Cannot modify header information - headers already sent by
    Apparement j'ai lus que c'est a cause du code html et qu'il fallait le declarer avant tous code html.
    donc j'ai mis mon header location avant le mail mais j'ai tujours la même erreur.

    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
      $destinataire = $email;
      $sujet = "Activer votre compte" ;								 
      $entete = 'From: L\'equipe de Monsite.com <postmaster@monsite.com>';
      $entete .= 'Mime-Version: 1.0'."\r\n";
      $entete .= 'Content-type: text/html; charset=utf-8'."\r\n";
      $entete .= "\r\n";
      $message = 'Bienvenue sur MonSite,
      <p>Pour activer votre compte, veuillez cliquer sur le lien ci dessous
      ou copier/coller dans votre navigateur internet.</p>
      <p><a href="http://localhost/index.php?inscription=activation&pseudo='.urlencode($pseudo).'&cle='.urlencode($cle).'">ACTIVER VOTRE COMPTE</a></p>
      <p>Ceci est un mail automatique, Merci de ne pas y r&eacute;pondre.</p>';
       mail($destinataire, $sujet, $message, $entete) ; // Envoi du mail								 
       header('location: index.php?traitement_inscription=fin&pseudo='.$pseudo.'&mail='.$email.''); 
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si ton fichier est en UTF8, veille a ce qu'il soit sans BOM.
    (tu peux voir et changer ca avec notepad++ par exemple).
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 178
    Points : 80
    Points
    80
    Par défaut
    OUi mais ça ne regle pas mon probleme de header location ??

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 178
    Points : 80
    Points
    80
    Par défaut
    J'ai regler le probleme avec
    ob_start();
    ob_end_flush();
    Pouvez vous me dire que fais cette fonction ?
    si ce la est bon ou pas ? merci

  5. #5
    Membre éprouvé Avatar de Alvaten
    Homme Profil pro
    Développeur Java / Grails
    Inscrit en
    Novembre 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java / Grails
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 324
    Points : 1 023
    Points
    1 023
    Par défaut
    Salut,

    Tu ne peux en effet pas lancer de header si tu affiche quelque chose avant.
    Une solution est de mettre ta fonction avant tout autre affichage JS/HTML (ou autre).

    Pour ton:
    ob_start();
    ob_end_flush();
    Je l'ai déja utilisé mais ne sais pas si c'est considéré comme "propre", ca force l'affichage lorsque tout le code est exécuté au lieu d'afficher "morceau par morceau". Plus de problème de header du coups comme le PHP est exécuté et te redirige avant l'affichage.

  6. #6
    FoxLeRenard
    Invité(e)
    Par défaut
    Sabotage t'a parlé de ton éditeur,
    Tu as dis avoir testé le header avant l'envoie de mail .......
    Pffffffff ... dur dur ...

    Sabotage répéte ça inlassablement, alors je me demandes, ou plustôt je TE demandes est-ce que nous voyons l'intégralitée du PHP ?? parce que nous voyons tous (c'est la remarque de Sabotage) qu'il y a deux lignes vides oh je sais juste un retour chariot ... avant ton ouverture PHPet voila ça suffit, car ça veut dire que le header est open la page contient déjas des éléments !!

Discussions similaires

  1. Erreur avec un entête pour faire une redirection
    Par noobyyy dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2009, 15h07
  2. Redirection avec entête "Location"
    Par caroen dans le forum Langage
    Réponses: 4
    Dernier message: 13/11/2008, 13h11
  3. [PHP-JS] Redirection avec des entêtes spécifiques
    Par joe1602 dans le forum Langage
    Réponses: 8
    Dernier message: 08/01/2007, 08h50
  4. Problème de redirection avec window.location
    Par Kosti dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/11/2004, 18h31
  5. Response.redirect() avec ancre nomée
    Par roots_man dans le forum ASP
    Réponses: 4
    Dernier message: 23/11/2004, 10h37

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