#1 2006-07-28 08:58:08

nicolas
Former Piwigo Team
2004-12-30
1566

redirect

Bonjour à tous,

j'explique ce que j'essaie de faire avec la fonction redirect() (dans include/functions.inc.php)  puisque cela semble poser problème.

Cette fonction au fil des révisions devient de plus en plus complexe et de plus en plus difficile à maintenir. Cette fonction devrait faire une redirection http. On l'utilise notament lorsqu'on place un cookie et que l'on veut être dans la situation où il exitse, c'est-à-dire sur la page suivante. On l'utilise aussi juste après l'identification ou la déconnexion.
Dans l'idéal cette fonction devrait se résumer à:

Code:

function redirect( $url ) {
  header("Location: http://{$_SERVER['SERVER_NAME']}/$url");
  exit();
}

Il n'en est rien car elle n'est pas toujours appelée au bon endroit (c'est-à-dire avant tout envoi de données (html, css, js, ...) au client) et du coup on pallie au mieux en faisant une redirection côté client en utilisant le tag meta http-equiv="refresh" avec une redirection immédiate (content=0). Cette redirection côté client est évidemment non fiable et on ajoute un lien pour rediriger vers la bonne page au cas où.
Pour avoir une fonction redirect() telle que celle dans le code ci-dessus il faudrait s'assurer de faire la redirection avant tout inclusion de fichier potentiellement modifié par les utilisateurs, tels que include/config_local.inc.php

Pour ne pas complexifier encore et encore cette fonction je propose de lui dédier un template spécifique qui ne contiendrait que le lien de redirection. Pour ne pas dépendre du contexte et du thème choisi, je propose de placer ce template dans le répertoire template-common. Pour ne pas complexifier les scripts page_header.php et page_tail.php, je propose de regrouper les templates header.tpl, footer.tpl et redirect.tpl dans un même template appelé directement dans la fonction redirect().

Je suis à la première étape où j'ai regroupé les 3 fichiers. J'ai d'autre part simplifié la fonction redirect().

Dans une deuxième étape, on pourrait améliroer le "rendu" de cette page mais qui je le rappelle ne s'affiche que le temps de la redirection faite par le navigateur. Sur mon poste je ne vois jamais cette page.


Donnez du peps à vos tags
Laissez vos visiteurs vous aidez à tagger vos images avec user_tags

Hors ligne

#2 2006-07-28 09:04:44

nicolas
Former Piwigo Team
2004-12-30
1566

Re: redirect

rvelices a écrit:

C'est peut etre une amelioration au niveau de code, mais
1. Je travaille toujours en theme dark et maintenant chaque fois qui'il y a redirection, il y a une page entierement blanche affichee rapidement dans mon navigateur.

Je propose de régler ça dans une deuxième étape.

rvelices a écrit:

2. Notice: Undefined variable: user in D:\pwg\bsf\include\functions.inc.php on line 584

commit trop rapide. J'ai oublié d'enlever du code qui m'a servit à débugger!
Corrigé: [Subversion] r1509

rvelices a écrit:

3. Pendant le dev je me suis deja servi pour debugger les requetes sql et le temps d'execution affichees normalement dans le footer (c'est perdu maintenant)

Je ne comprends pas pourquoi tu le fais ici mais quoi qu'il en soit on peut remettre les informations du footer.

rvelices a écrit:

4. le titre de ta page t'aurais du faire un strip_tags

oui.

rvelices a écrit:

Je suis d'accord avec chrisaga que c'est mieux si on utilise le header/footer du template

Je le répète: le header et le footer y sont mais sous une forme simplifié pour ne pas dépendre du thème.

Mon idée est de réduire la fonction redirect() à celle qu'elle devrait être, à savoir celle du premier message de ce sujet.

Dernière modification par nicolas (2006-07-28 09:55:35)


Donnez du peps à vos tags
Laissez vos visiteurs vous aidez à tagger vos images avec user_tags

Hors ligne

#3 2006-07-28 09:15:25

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12675

Re: redirect

(on a perdu les posts de rvelices et chrisaga dans ce topic ?)


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#4 2006-07-28 09:45:38

nicolas
Former Piwigo Team
2004-12-30
1566

Re: redirect

z0rglub a écrit:

(on a perdu les posts de rvelices et chrisaga dans ce topic ?)

Pourquoi tu dis ça ? On peut les recopier. Il n'y en avait pas. J'ai repris le message de rvelices postés dans Mantis.


Donnez du peps à vos tags
Laissez vos visiteurs vous aidez à tagger vos images avec user_tags

Hors ligne

#5 2006-07-28 10:12:54

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12675

Re: redirect

En effet, je me suis rendu compte a posteriori que les messages de rvelices et chrisaga que tu cites sont dans le bugtracker. Difficile de suivre la conversation quand elle a lieu à 2 endroits différents :-/.


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#6 2006-07-28 13:46:30

rub
Former Piwigo Team
Lille
2005-08-26
5239

Re: redirect

Attention, je suis ca de loin, mais je sais que j'ai utlisé la notion de redirection pour la notification par mail.
Mais pas dans un cas "classique".

Je l'ai utilisé dans mon traitement pour outrepasser le timemout (les "vrais" fonctions le permettant étant non dispo chez Free, par exemple).
Donc une redirection avec comme url une page particulière et un temps d'attente de zéro.




On utilise les mêmes procédures pour chaque cas, mais je penses que plusieurs fonctions seraient peut-être mieux!

Qq'1 peut-il faire un point de l'endroit ou est utilisé un redirect et pour faire quoi?

Hors ligne

#7 2006-07-28 15:21:18

rvelices
Équipe Piwigo
2005-12-29
1417

Re: redirect

Si le but final est d'utiliser le header Location, d'accord - mais ca ne va pas trop marcher si les entetes http ont deja ete envoye. Sinon je ne vois aucun interet de la mettre en template-common et ensuite la personnaliser selon le theme.

En plus il faut que tu remettes les choses en page_header, car le slideshow et la notification par mail utilisent le meta refresh.

nicolas a écrit:

Je ne comprends pas pourquoi tu le fais ici mais quoi qu'il en soit on peut remettre les informations du footer.

Pour le debug des requetes sql: il y a plusieurs redirections en picture suite au "set as representative", "add to caddie", "rate" ... En desactivant le meta redirect sur le navigateur je me suis servi pour debugger les requetes sql.

Hors ligne

#8 2006-07-28 16:02:17

nicolas
Former Piwigo Team
2004-12-30
1566

Re: redirect

rvelices a écrit:

Si le but final est d'utiliser le header Location, d'accord - mais ca ne va pas trop marcher si les entetes http ont deja ete envoye.

Je sais bien mais je compte bien trouver un moyen de le gérer correctement sans cette redirection bancale.

rvelices a écrit:

Sinon je ne vois aucun interet de la mettre en template-common et ensuite la personnaliser selon le theme.

Je ne veux pas intégrer de thème.

rvelices a écrit:

En plus il faut que tu remettes les choses en page_header, car le slideshow et la notification par mail utilisent le meta refresh.

c'est fait.  [Subversion] r1512


Donnez du peps à vos tags
Laissez vos visiteurs vous aidez à tagger vos images avec user_tags

Hors ligne

#9 2006-07-28 17:44:53

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12675

Re: redirect

A l'origine, les redirections utilisaient la directive "header". Devant le nombre de retour sur le forum à l'époque à cause des problèmes de caractères écrits avant le header, comme un caractère après le "?>" de include/mysql.inc.php, j'ai switché la redirection en meta-refresh HTML. Je préfère de beaucoup cette méthode, mais alors franchement beaucoup. C'est d'ailleurs la méthode que l'on retrouve sur de très nombreux projets et c'est à la fois efficace et ça marche partout.

Bref, je ne vois pas l'intérêt de repasser à header :-/


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#10 2006-07-28 20:32:59

rub
Former Piwigo Team
Lille
2005-08-26
5239

Re: redirect

J'ai ma BSF qui boucle à l'infini avec $conf['guest_access'] = false;


Et j'ai ca qui s'affiche sur fond blanc:

Code:

Notice: Undefined index: language in d:\dev\bsf\include\functions_user.inc.php on line 527

Redirection...

Cliquez ici si votre navigateur ne vous redirige pas.

Hors ligne

#11 2006-07-29 18:38:21

chrisaga
Former Piwigo Team
France (92)
2005-08-10
566

Re: redirect

rvelices a écrit:

Sinon je ne vois aucun interet de la mettre en template-common et ensuite la personnaliser selon le theme.

Moi non plus.
Je n'ai pas tout analysé, mais je ne vois pas en quoi cette modif du template aide à simplifier le redirect.
En quoi c'est beaucoup plus simple que d'appeler header.tpl, redirect.tpl, et enfin footer.tpl comme c'est fait partout dans PWG ?

<:o|


Utilisateur depuis la version 1.3, Impliqué depuis la 1.4, Responsable du template des 1.5 et 1.6  ... et en (in)disponibilité sur la 1.7

Hors ligne

#12 2006-07-29 21:53:16

nicolas
Former Piwigo Team
2004-12-30
1566

Re: redirect

Je me suis désassigné de la fonctionnalité si cela intéresse quelqu'un de faire les développements nécessaires.


Donnez du peps à vos tags
Laissez vos visiteurs vous aidez à tagger vos images avec user_tags

Hors ligne

#13 2006-07-29 23:15:39

chrisaga
Former Piwigo Team
France (92)
2005-08-10
566

Re: redirect

nicolas a écrit:

Je me suis désassigné de la fonctionnalité si cela intéresse quelqu'un de faire les développements nécessaires.

Pourquoi ?
Simplifier le redirect est probablement une bonne idée s'il est trop complexe et/ou mal utilisé.
Tu peux sans doute y arriver en tenant compte de ce qu'a dit z0rglub (header/pas header , je n'ai pas regardé, ça me dépasse un peu),
et ce que d'autres ont dit sur l'utilisation du template.

<:o)


Utilisateur depuis la version 1.3, Impliqué depuis la 1.4, Responsable du template des 1.5 et 1.6  ... et en (in)disponibilité sur la 1.7

Hors ligne

#14 2006-07-30 01:29:50

rub
Former Piwigo Team
Lille
2005-08-26
5239

Re: redirect

nicolas a écrit:

Je me suis désassigné de la fonctionnalité si cela intéresse quelqu'un de faire les développements nécessaires.

Et pour le problème que j'avais indiqué?

rub a écrit:

J'ai ma BSF qui boucle à l'infini avec $conf['guest_access'] = false;


Et j'ai ca qui s'affiche sur fond blanc:

Code:

Notice: Undefined index: language in d:\dev\bsf\include\functions_user.inc.php on line 527

Redirection...

Cliquez ici si votre navigateur ne vous redirige pas.

Hors ligne

#15 2006-08-01 06:57:23

rub
Former Piwigo Team
Lille
2005-08-26
5239

Re: redirect

rub a écrit:

nicolas a écrit:

Je me suis désassigné de la fonctionnalité si cela intéresse quelqu'un de faire les développements nécessaires.

Et pour le problème que j'avais indiqué?

rub a écrit:

J'ai ma BSF qui boucle à l'infini avec $conf['guest_access'] = false;


Et j'ai ca qui s'affiche sur fond blanc:

Code:

Notice: Undefined index: language in d:\dev\bsf\include\functions_user.inc.php on line 527

Redirection...

Cliquez ici si votre navigateur ne vous redirige pas.

En fait, le problème ne provient pas de la redirection mais des sessions.
Ayant descendu, les 2 modifications en même temps, il y a eu amalgame!

Hors ligne

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2025 · Contact