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 :

<meta> ou header('location')


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 131
    Points : 111
    Points
    111
    Par défaut <meta> ou header('location')
    Bonjour à tous,

    Je reviens avec un problème récurent, en tous les cas pour moi !

    si j'utilise:
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header('Location: ./index.php');
    exit();
    Ca me provoque une erreur de type :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Warning
    : Cannot modify header information - headers already sent by (output started

    alors que :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="refresh" content="0;URL=./index.php">
    fonctionne parfaitement !

    Alors je précise que je n'ai pas de balise fermante "?>" à la fin de mon script, ce qui pourrait provoquer un erreur
    le header->location est appelé dans un fichier 'logout'.

    Comment puis-je tester cette erreur ?
    Merci de vos aides et explications

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 96
    Points : 180
    Points
    180
    Par défaut Pour afficher l'erreur
    Bonjour pour afficher plus du détail sur l'erreur tu peux essayer de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    Au début de ton script php

    A défaut d'avoir ton code complet avec la balise ouvrant etc ... Vérifie qu'il n'y ait pas d'espace blanc avant ta balise <?php ,des fois c’a pète à cause de ça , en tout cas l'avais fait pour moi y a pas mal de temps
    Un petit sujet de forum qui traite de ça
    https://stackoverflow.com/questions/...t-error-in-php

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 228
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 228
    Points : 8 487
    Points
    8 487
    Billets dans le blog
    17
    Par défaut
    Comment puis-je tester cette erreur ?
    Cette erreur signifie que tu affiches quelque chose avant ton header().
    Cela peut être n'importe quoi, comme un echo ou une simple espace qui traine après un ?> d'un des fichiers inclus.

    Pour avoir une idée de la nature des caractères posant problème, modifie ton script en :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo ']=== VERIFIER CE QU\'IL Y A AVANT';
    header('Location: ./index.php');
    exit();

    Puis affiche la source et vérifie ce qui précède ]=== VERIFIER CE QU'IL Y A AVANT.
    Il suffira ensuite d'identifier ce qui affiche cela et de le supprimer.

  4. #4
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 131
    Points : 111
    Points
    111
    Par défaut
    Merci à vous d'avoir apporté des pistes.

    Mon incompréhension va de paire surtout qu'en local, aucun soucis => header->location fonctionne.

    Je m'orienterai peut etre vers un réglage du php.ini ou bien vers ce que j'ai lu (mais pas vraiment compris) => UTF8- avec ou sans boom

    Pour Seb, pardon de ma question, j'ai pas saisi comment procéder ?
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    echo ']=== VERIFIER CE QU\'IL Y A AVANT';


    Merci

  5. #5
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 131
    Points : 111
    Points
    111
    Par défaut
    Bien je reviens vers vous et j'ai réglé le soucis de la façon suivante :

    J'ai passé sur le serveur, le php.ini à la valeur output_buffering était :
    Code TEXT : Sélectionner tout - Visualiser dans une fenêtre à part
    output_buffering = OFF
    à
    Code TEXT : Sélectionner tout - Visualiser dans une fenêtre à part
    output_buffering = 16384

    Je ne sais pas si c'était la meilleure solution, mais cela à pour mérite de fonctionner.
    Je résolu le post, cependant si cette méthode peut poser un problème, j'attends quand meme quelques commentaires.

    Merci à tous
    JLuc

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 96
    Points : 180
    Points
    180
    Par défaut
    A bon entendeur si ça peut être utile, si tu fais ça dans le php.ini ça peut affecter les performances.
    Pour être honnête la je suis en terrain inexploré, je ne sais pas si ça fonctionne mais mistral (une ia française pas si mal) me dit que c'est possible d'activer la mise en tampon de sortie uniquement pour les scripts qui en ont besoin.
    Style comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    ob_start();
    // Votre code ici
    header('Location: ./index.php');
    ob_end_flush();
    exit();
    ?>
    Aucune idée de la véracité de cette proposition je te laisse l'exploré si ça t'intéresse, en tout cas, tant que ça fonctionne sans répercussion bah tant mieux c'était l'objectif
    Oublie pas de mettre en résolu si tu es satisfait de ton travail

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 394
    Points : 15 755
    Points
    15 755
    Par défaut
    comme l'a dit gabi7756, ces modifications dans le fichier php.ini peuvent dégrader les performances de vos pages.

    il vaut mieux chercher d'où vient l'affichage et corriger le code. la FAQ donne des explications sur la façon de corriger le souci :
    https://php.developpez.com/faq/?page...s_already_sent

  8. #8
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 131
    Points : 111
    Points
    111
    Par défaut
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ob_start();
    // Votre code ici
    header('Location: ./index.php');
    ob_end_flush();
    exit();

    Hello gabi7756, j'ai testé et n'a pas l'air de fonctionner. Bon je laisse la modif du php.ini pour l'instant.

    Pour @mathieu. J'ai lu la faq et de nombreux tutos. Rien n'y fait.
    Seul piste non exploité, UTF8 sans ou avec boom => je ne sais pas faire ! lol

    JLuc

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

Discussions similaires

  1. Mon header("Location: page.php"); ne fonctionne pa
    Par Flushovsky dans le forum Langage
    Réponses: 17
    Dernier message: 24/03/2006, 23h49
  2. [header location]
    Par agougeon dans le forum Langage
    Réponses: 5
    Dernier message: 11/01/2006, 20h26
  3. Actualiser une page après un "header location"
    Par salva57 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 15
    Dernier message: 10/01/2006, 22h09
  4. header('Location:$url') VS session_start()
    Par Paniez dans le forum Langage
    Réponses: 2
    Dernier message: 02/12/2005, 22h30
  5. [FTP] problème header("location:......")
    Par K4trix dans le forum Langage
    Réponses: 23
    Dernier message: 30/11/2005, 11h53

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