Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/06/2007, 09h38   #1
Nouveau Membre du Club
 
Inscription : 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 : 36
Points : 36
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
WagaSeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 09h43   #2
Membre éclairé
 
Avatar de Asmodean
 
Inscription : février 2006
Messages : 311
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France

Informations forums :
Inscription : février 2006
Messages : 311
Points : 346
Points : 346
Envoyer un message via MSN à Asmodean
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.
Asmodean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 10h08   #3
Nouveau Membre du Club
 
Inscription : 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 : 36
Points : 36
hum hum ..., la bufferisation ....

Encore un nom barbare a apprendre !

Ok, je vais me pencher sur la question !

beaucoup pour ton aide !
WagaSeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 10h20   #4
Rédacteur
 
Avatar de Yoshio
 
Homme
Inscription : septembre 2005
Messages : 1 741
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 1 741
Points : 1 497
Points : 1 497
Tu peux faire une redirection avec la balise <meta http-equiv="refresh" content="..."> mais c'est ce qu'il y a de plus propre.
Yoshio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 10h58   #5
Nouveau Membre du Club
 
Inscription : 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 : 36
Points : 36
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 ....
WagaSeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 11h38   #6
Rédacteur
 
Avatar de Yoshio
 
Homme
Inscription : septembre 2005
Messages : 1 741
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 1 741
Points : 1 497
Points : 1 497
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.
Yoshio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 11h54   #7
Membre régulier
 
Étudiant
Inscription : juin 2006
Messages : 83
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2006
Messages : 83
Points : 84
Points : 84
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
Wharenn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 16h41   #8
Nouveau Membre du Club
 
Inscription : 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 : 36
Points : 36
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é !!!
WagaSeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 17h01   #9
Membre régulier
 
Étudiant
Inscription : juin 2006
Messages : 83
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2006
Messages : 83
Points : 84
Points : 84
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 :
1
2
 
header("Location: mapage.php");
Dans ton cas, vu que tu utilises une liste blanche ca va ressembler à ça :

Code :
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
Wharenn est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h02.


 
 
 
 
Partenaires

Hébergement Web