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 :

headers et include


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 68
    Points
    68
    Par défaut headers et include


    J'ai un problème de ... communication :

    J'ai un fichier index.php qui me créé ma structure de base (entete, menus, corps et pieds de pages)
    Les différents corps (selon les pages choisies) sson gérées dans l'index.php par des includes.

    Pbs : si je veux faire des redirections avec headers dans certaines sous-pages, j'ai déjà l'entete du index.php qui est envoyé et donc ca bug ...

    Pouvez vous me dire comment vous faites ???

    d'avance

  2. #2
    Membre averti Avatar de Asmodean
    Profil pro
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Points : 378
    Points
    378
    Par défaut
    Avec le systeme de bufferisation: http://de3.php.net/manual/fr/ref.outcontrol.php

    Le truc c'est de bufferiser tout ce que tu va afficher mais rien n'est envoyé. Ca te permet d'appeler les fonctions header, session_start etc en plein milieu de script.

    Ou alors tu fais tes traitement en début de script et tu n'affiche la page qu'a la fin.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 68
    Points
    68
    Par défaut
    hum hum ..., la bufferisation ....

    Encore un nom barbare a apprendre !

    Ok, je vais me pencher sur la question !

    beaucoup pour ton aide !

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Tu peux faire une redirection avec la balise <meta http-equiv="refresh" content="..."> mais c'est ce qu'il y a de plus propre.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 68
    Points
    68
    Par défaut
    Désolé, j'ai pas bien compris laquelle des deux solution est la plus propre ? Le buffer ?
    Mais la redirection par meta n'est peut etre pas la mieux appropriée car mon fichier index.php peux inclure une bonne quinzaine de fichiers différents ...

    Par contre si qqun connait un bon tutos sur la bufferisation, c'est pas de refus, c'est pas limpide pour l'instant ... (ou un exemple de code)

    :mercu: en tout cas et je continue de chercher ....

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Que tu fasse une redirection avecun meta ou avec header ya pas grand chsoe qui change le résultat est le même.

    Et la bufferisation, bofbof. Si ce n'est que pour faire une redirection utilise le meta ca sera tjrs plus propre et ca t'evitera de mettre 50 ligne ne plus pour iren.

  7. #7
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 83
    Points : 95
    Points
    95
    Par défaut
    La redirection par meta ne fonctionnera pas car les heads sont déjà envoyés avec la structure de la page.

    Ca dépend comment tu fais ton inclusion mais si tu utilises le principe de la liste blanche (switch + case pour chaque page prévue), tu peux gérer la redirection par header avant même d'envoyer la structure, car je suppose que tes pages redirigeant avec des headers n'affichent pas de contenu

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 68
    Points
    68
    Par défaut
    Effectivement, j'utilise le switch+case...

    Mais peux tu m'expliquer la redirection par header car je débute et ne maitrise vraiment pas bien les headers.
    J'ai compris le principe mais pour l'utilisation, j'ai du mal !

    Merci beaucoup, c'est super sympa d'etre un peu guidé !!!

  9. #9
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 83
    Points : 95
    Points
    95
    Par défaut
    La fonction Header permet d'envoyer un entête HTTP au serveur, c'est pour cette raison qu'elle doit être exécutée avant d'envoyer le contenu de la page. La redirection par header fonctionne avec la directive Location.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header("Location: mapage.php");
    Dans ton cas, vu que tu utilises une liste blanche ca va ressembler à ça :

    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
    23
    24
    25
    26
    27
    28
    29
     
    <?php
    $zone = "";
    // Switch sur le paramètre action transmis par get
    switch($_GET['action']) {
    case 'page1':
         // Page normale
         $zone = "page1.php";
         break;
    case 'page2':
         // Page à rediriger après traitements
         [traitements...]
         // Après les traitements, redirection vers la page 1 avec le header
         header('Location: index.php?action=page1');
         // Rien de ce qui n'est placé derrière le header est exécuté
         break;
    default:
         $zone = "blank.php";
         break;
    }
    ?>
    <html>
    <head>...</head>
    <body>
         ...
         <?php include($zone); ?>
         ...
    </body>
    </html>
    Et en plus c'est assez sécurisé :p

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

Discussions similaires

  1. [Wamp] Header dans include
    Par zebu238 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 10/02/2009, 18h09
  2. variable session dans header en include
    Par hpl76 dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 16/09/2008, 14h44
  3. Réponses: 2
    Dernier message: 23/03/2006, 15h10
  4. Réponses: 2
    Dernier message: 07/03/2006, 01h53
  5. [compil] #include <header> ou #include <head
    Par guejo dans le forum MFC
    Réponses: 5
    Dernier message: 02/06/2004, 15h31

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