From 59948ee60425a1c4d5c561fbc661b6a3ad30d2d4 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Fri, 2 Jun 2006 10:34:08 +0000 Subject: [PATCH] =?UTF-8?q?corrections=20sur=20self()=20quand=20&var=5Fx?= =?UTF-8?q?=3Da&var=5Fy=3Db=20;=20la=20regexp=20n'en=20=C3=A9liminait=20qu?= =?UTF-8?q?'un?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/inc/utils.php | 14 +++++++++----- ecrire/public/balises.php | 1 + ecrire/public/debug.php | 8 ++++---- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 505dafae31..f375a9d359 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -331,11 +331,15 @@ function parametre_url($url, $c, $v=NULL, $sep='&') { // pour calcul du nom du fichier cache et autres // function nettoyer_uri() { - return preg_replace(',[?&]$,', '', - preg_replace - (',([?&])(PHPSESSID|(var_[^=&]*))=[^&]*(&|$),i', - '\1', - $GLOBALS['REQUEST_URI'])); + $uri1 = $GLOBALS['REQUEST_URI']; + do { + $uri = $uri1; + $uri1 = preg_replace + (',([?&])(PHPSESSID|(var_[^=&]*))=[^&]*(&|$),i', + '\1', $uri); + } while ($uri<>$uri1); + + return preg_replace(',[?&]$,', '', $uri1); } // diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php index 73c89ac422..e6f6387343 100644 --- a/ecrire/public/balises.php +++ b/ecrire/public/balises.php @@ -861,6 +861,7 @@ function code_invalideur_forums($p, $code) { // Reference a l'URL de la page courante // Attention dans un INCLURE() ou une balise dynamique on n'a pas le droit de // mettre en cache #SELF car il peut correspondre a une autre page (attaque XSS) +// (Dans ce cas faire <INCLURE{self=#SELF}> pour differencier les caches.) // http://www.spip.net/@self function balise_SELF_dist($p) { $p->code = 'quote_amp(self())'; diff --git a/ecrire/public/debug.php b/ecrire/public/debug.php index 1c44684f44..abdbb4db2c 100644 --- a/ecrire/public/debug.php +++ b/ecrire/public/debug.php @@ -338,8 +338,7 @@ function debug_dumpfile ($texte, $fonc, $type) { http_no_cache(); lang_select($auteur_session['lang']); $self = str_replace("\\'", ''', self()); - $self .= ((strpos($self, '?') !== false) ? '&' : '?') . - 'var_mode=debug'; + $self = parametre_url($self,'var_mode', 'debug'); echo _DOCTYPE_ECRIRE, "<html lang='".$GLOBALS['spip_lang']."' dir='ltr'>\n" . "<head>\n<title>", @@ -353,11 +352,12 @@ function debug_dumpfile ($texte, $fonc, $type) { "\n<div id='spip-debug' style='position: absolute; top: 22px; z-index: 1000;height:97%;left:10px;right:10px;'><div id='spip-boucles'>\n"; if ($var_mode_affiche !== 'validation') { + $self = parametre_url($self,'var_mode', 'debug'); foreach ($debug_objets['sourcefile'] as $nom_skel => $sourcefile) { echo "<fieldset><legend>",$sourcefile," : "; echo "\n<a href='$self&var_mode_objet=$nom_skel&var_mode_affiche=squelette#$nom_skel'>"._T('squelette')."</a>"; - echo "\n<a href='$self&var_mode=debug&var_mode_objet=$nom_skel&var_mode_affiche=resultat#$nom_skel'>"._T('zbug_resultat')."</a>"; - echo "\n<a href='$self&var_mode=debug&var_mode_objet=$nom_skel&var_mode_affiche=code#$nom_skel'>"._T('zbug_code')."</a></legend>"; + echo "\n<a href='$self&var_mode_objet=$nom_skel&var_mode_affiche=resultat#$nom_skel'>"._T('zbug_resultat')."</a>"; + echo "\n<a href='$self&var_mode_objet=$nom_skel&var_mode_affiche=code#$nom_skel'>"._T('zbug_code')."</a></legend>"; if (is_array($contexte = $debug_objets['contexte'][$nom_skel])) echo afficher_debug_contexte($contexte); -- GitLab