Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Templates > phplib et phpBB
phplib et phpBB Forum d'entraide sur les moteurs de templates phplib et phpBB. Avant de poster -> FAQ gabarits phpBB2, Cours phpBB2 et Sources phpBB2
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 12/01/2007, 16h37   #1
Invité régulier
 
Étudiant
Inscription : octobre 2005
Messages : 26
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2005
Messages : 26
Points : 5
Points : 5
Par défaut [PhpBB 2] En manque d'idée : intégrer une redirection

Bonjour à tous
Je me trouve face à un problème qui dépasse ma vision actuelle du langage PHP et des systèmes de gestion de templates.
Je programme actuellement un portail web et j'utilise pour séparer le contenu du code le système de templates de phpbb.

J'ai un fichier tp pour l'entete (header.tp) un fichier tp pour la page en cours et un fichier tp pour le footer.
J'inclu systématiquement le header et le footer. Au début de chacun de mes scripts je parse le header après lui avoir assignés les variables correspondant à un menu de navigation.

Mon problème est que je veux utiliser une fonction de redirection d'une page vers une autre au bout de x secondes.

Cette fonction se présente ainsi :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function redirection($location, $why, $message, $title)
{
    //include_once('template.inc.php');
    //$template = new Template('./templates');
 
    global $template;
    $template->set_filenames(array('redirection' => 'redirection.tpl'));
 
    $template->assign_vars(array(
    'LOCATION'    =>    $location,
    'WHY'        =>    $why,
    'MESSAGE'    =>    $message,
    'TITLE_PAGE'=>  $title));
 
 
    // On parse le fichier HTML, c'est à dire qu'on assigne aux fichier template toutes les données qu'on à créer dans le .php
    $template->pparse('redirection');
    $template->pparse('footer');
}
Le problème c'est que le code de la page en cours de redirection est complètement hors norme ce que je ne peux accepter.
Exemple :

Code html :
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
30
31
32
33
34
35
36
37
38
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="./include/style.css" media="screen" />
<title></title>
</head>
<body>
 
 [...]
 
<div id="content">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Refresh" content="2;url=index.php">
<title>Redirection en cours</title>
</head>
<body>
<div class="center_content">
<p>
    Vous n'avez pas les droits pour acc&eacute;der &agrave; l'interface d'administration. <br  />
    Vous allez &ecirc;tre redirig&eacute; dans quelques instants.
</p>
</div>
</body>
</html>
<!-- Inclusion du pied de page commun à toutes -->
</div>
<!-- * -->
<!-- Footer -->
<div id="footer">Je suis un magnifique pied de page</div>
<!-- * -->
</div>
<!-- Fermeture des balises HTML-->
</body>
</html>
Cette erreur vient du fait que le header est parsé en début de script. Mais je ne vois pas comment faire autrement.

Je suis désolé pour la taille de ce post mais je pense que c'était le minimum pour que vous puissiez comprendre quelque chose à mon barratin...

Je remercie d'avance tout ceux et toutes celles qui se pencheront sur mon problème et qui pourront peut-être me donner quelques idées

Olivier BALAIS
obalais est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 18h12   #2
Membre Expert
 
Inscription : octobre 2002
Messages : 1 141
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2002
Messages : 1 141
Points : 1 204
Points : 1 204
Envoyer un message via MSN à Raideman
Je vais tenter de t'aider mais sans promesse...
En fait, tu as tes fichiers de la forme suivante (corrige moi si je me trompe):
<header.tpl>
<contenu.tpl>
<footer.tpl>


Dans ton redirection.tpl tu as quoi comme code?
Si tu as remis toutes les balises meta, html et compagnie, normal que tu es un double affichage puisque tu retrouves ces balises a la fois dans header.tpl et dans redirection.tpl.
Ce qu'il te faudrait c'est définir ta redireciton directement dans le header.

Par exemple dans header.tpl tu rajoutes une lignes
{LIGNE_REDIRECTION}

et au moment de parser le header tu fais un truc du genre:
Code :
1
2
3
4
5
6
7
8
9
$template->set_filenames(array('header' => 'header.tpl'));
 
	$template->assign_vars(array(
	'LIGNE_REDIRECTION'	=>	'<meta http-equiv="Refresh" content="2;url='.$ta_page.'">',
));
 
 
 
	$template->pparse('header');
Bref, je sais plus trop comment ca marche mais ca devrait le faire.
Sinon tu peux toujours te tourner vers des solutions de redirection en JS (genre settimeout) qui t'evite de retoucher a tes balises meta notamment mais qui posent un probleme de compatibilité.

Désolé si je ne te suis pas d'une grande aide mais en tout cas je t'ai donné des pistes.

Raideman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 18h25   #3
Invité régulier
 
Étudiant
Inscription : octobre 2005
Messages : 26
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2005
Messages : 26
Points : 5
Points : 5
Alors tout d'abord je te remercie d'avoir consacré un peu de ton temps à mon problème !

Je te confirme que le code du fichier redirection.tpl contient toutes les balises ce qui est à l'origine du doublon.
J'ai également déjà ajouté dans header.tpl l'équivalent de la ligne que tu désignes par {LIGNE_REDIRECTION}.

Malheureusement je ne peux pas faire cette opération puisque mon header est déjà parsé en début de fichier. Et dans mon cas je ne vois pas comment le parser après la redirection...
obalais est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2007, 11h50   #4
Invité régulier
 
Étudiant
Inscription : octobre 2005
Messages : 26
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2005
Messages : 26
Points : 5
Points : 5
Je pense en fin de compte que tu m'as apporté une solution. Je ne suis pas sur mon PC donc je ne peux pas la tester tout de suite...

En fait je m'obstine à parser mon header au début du script... Mais en y réfléchissant bien, ce qui compte c'est qu'il soit parsé avant le content, lui même devant être parsé avant le footer.
En gros je peux parser les 3 templates en fin de script, et dans cet ordre.
Ce qui me permettrait donc d'utiliser la technique dont tu m'as parlé, utilisant une variable pour rajouter dans le header la redirection...

Je vous tiens au courant
obalais est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2007, 14h23   #5
Invité régulier
 
Étudiant
Inscription : octobre 2005
Messages : 26
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2005
Messages : 26
Points : 5
Points : 5
Voila je vous confirme que tout fonctionne parfaitement et que je n'avais nullement besoin de parser le header au début, du moment que le parsing se faisait bien dans l'ordre header, content, footer, à la fin du script...

Merci encore !
obalais est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h32.


 
 
 
 
Partenaires

Hébergement Web