[spip-dev] bug #URL_LOGOUT ?

bonjour

soit le lien suivant d'exemple suivant:

http://thierry.schmit.free.fr/spip/spip.php?page=article&id_article=3

qui théoriquement affiche une invite de connexion en haut à droite.
log: test
pass: justeuntest
Si vous vous connectez, aucun problème.
A la place de l'invite de connexion vous obtenez une invite de déconnexion construite à partir de la balise #URL_LOGOUT.

Si vous vous déconnectez.... erreur 404.
Regardez bien l'url dans votre navigateur, elle devrait être:
http://thierry.schmit.free.fr/spip/spip.php?page=article&id_article=3
---------------------------------------------------------^

si on supprime à la main le amp; tout redevient normal.

Est ce un bug, ou un mésusage de cette balise ?

merci d'avance

thierry

tu dois mettre l'url que tu souhaites en te deconnectant
ex : <a href='#URL_LOGOUT{#URL_PAGE{sommaire}} '>Se d&eacute;connecter</a>
tu peux aussi faire un truc avec #ENV pour rester sur la page en cours.

thierry a écrit :

bonjour

soit le lien suivant d'exemple suivant:

Les balises dynamiques - spip de madbuilder

qui théoriquement affiche une invite de connexion en haut à droite.
log: test
pass: justeuntest
Si vous vous connectez, aucun problème.
A la place de l'invite de connexion vous obtenez une invite de déconnexion construite à partir de la balise #URL_LOGOUT.

Si vous vous déconnectez.... erreur 404.
Regardez bien l'url dans votre navigateur, elle devrait être:
http://thierry.schmit.free.fr/spip/spip.php?page=article&amp;id_article=3
---------------------------------------------------------^

si on supprime à la main le amp; tout redevient normal.

Est ce un bug, ou un mésusage de cette balise ?
  
je ne sais pas mais il y a un encodage de trop.
ton url de logout est
http://thierry.schmit.free.fr/spip/spip.php?action=logout&logout=public&url=spip.php%3Fpage%3Darticle%26amp%3Bid_article%3D3
mais devrait etre :
http://thierry.schmit.free.fr/spip/spip.php?action=logout&logout=public&url=spip.php%3Fpage%3Darticle%26id_article%3D3

comment tu generes le logout ?

#URL_LOGOUT{#SELF} ?

Peut etre essayer avec la derniere version de spip aussi (http://files.spip.org/spip/SPIP-v1-9-2.zip), la c'est une 1.9.2a, ca a peut etre été corrigé depuis

thierry a écrit :

donc je redis :
peux-tu essayer en mettant à jour en 1.9.2b (version SVN) ?

@++

je suis en 1.9.2.b en config de dev et c'est pire.

et ca, ca vaut au moins 2 "ca marche pô"...
:slight_smile:

mon code est:

<div style="font-size:70%; margin-bottom:10px">
<?php if (($auteur_session)) { echo $auteur_session['nom'].'<br />';?>
<a href="#URL_LOGOUT">se d&eacute;connecter</a>
<?php } else {?>
#LOGIN_PUBLIC
<?php } ?>
</div>

inclus avec un
<INCLURE{fond=plugin_se_connecter.html}>

je confirme, c'est un bug et toujours present en 1.9.2b

Est-ce que ca aurait été corrigé sur la branche de dev ?
à priori je ne pense pas, sauf si c'est dans generer_url_action que ca a bougé

j'ai le probleme avec #URL_LOGOUT et #URL_LOGOUT{#SELF} dès qu'il y a un & dans l'url (spip.php?page=rubrique&id_rubrique=1)

Voila une rustine qui a l'air de marcher, mais il y a surement mieux (un des filtres de spip mais lequel ?)

dans ecrire/balise/url_logout.php :
30c30
< return generer_url_action('logout',"logout=public&url=" . rawurlencode($cible ? $cible : self()));

re bonjour,

En attendant mieux, ca a le merite de marcher...

@++

merci pour la rustine.
je vais me permettre de rajouter une couche:

Le problème n'est toujours pas résolu, même en 1.9.3.
j'observe de plus un comportement bizarre.

soit le code plugin_se_connecter.html suivant

<div style="font-size:70%; margin-bottom:10px">
<?php if (($auteur_session)) { echo $auteur_session['nom'].'<br />';?>
<a href="#URL_LOGOUT">se d&eacute;connecter</a>
<?php } else {?>
#LOGIN_PUBLIC
<?php } ?>
<hr />
[(#ENV{id_article}|?{
#URL_LOGOUT,
pas article
})]
</div>

inclus dans article.html par
<INCLURE{fond=plugin_se_connecter} {id_article}>

Alors, le code de la balise #URL_LOGOUT ne semble pas interprt. Comme
illustr par le lien suivant:

Est ce que j'en demande trop au compilateur ?
merci d'avance

thierry

PS: meme comportement avec le code
[(#ENV{id_article}|?{
[(#URL_LOGOUT)],
pas article
})]

spipcarto a écrit :

thierry a écrit :

donc je redis :
peux-tu essayer en mettant à jour en 1.9.2b (version SVN) ?

@++

je suis en 1.9.2.b en config de dev et c'est pire.

et ca, ca vaut au moins 2 "ca marche pô"...
:slight_smile:

mon code est:

<div style="font-size:70%; margin-bottom:10px">
<?php if (($auteur_session)) { echo $auteur_session['nom'].'<br />';?>
<a href="#URL_LOGOUT">se d&eacute;connecter</a>
<?php } else {?>
#LOGIN_PUBLIC
<?php } ?>
</div>

inclus avec un
<INCLURE{fond=plugin_se_connecter.html}>

je confirme, c'est un bug et toujours present en 1.9.2b

Est-ce que ca aurait été corrigé sur la branche de dev ?
à priori je ne pense pas, sauf si c'est dans generer_url_action que ca a bougé

j'ai le probleme avec #URL_LOGOUT et #URL_LOGOUT{#SELF} dès qu'il y a un & dans l'url (spip.php?page=rubrique&id_rubrique=1)

Voila une rustine qui a l'air de marcher, mais il y a surement mieux (un des filtres de spip mais lequel ?)

dans ecrire/balise/url_logout.php :
30c30
< return generer_url_action('logout',"logout=public&url=" . rawurlencode($cible ? $cible : self()));
---
> return generer_url_action('logout',"logout=public&url=" . rawurlencode(str_replace('&amp;','&',($cible ? $cible : self()))));

En attendant mieux, ca a le merite de marcher...

Je crois que le patch à faire, en fait, c'est

return generer_url_action('logout',"logout=public&url=" .
rawurlencode($cible ? $cible : self('&')));

C'est la fonction self() qui a bougé (mais je ne sais pas quand)
et prend un ou deux paramètres optionnels. C'est
récurrent sur URL_LOGOUT :slight_smile:

pour faire la noisette Formulaire de connexion/Déconnexion, il y
a la balise #SESSION qui existe déjà :

http://spip-zone.info/spip.php?page=session

Mais c'est comme vous voulez :slight_smile:

thierry a écrit :

[(#ENV{id_article}|?{
#URL_LOGOUT,
pas article
})]

Les balises dynamiques - spip de madbuilder

Est ce que j'en demande trop au compilateur ?
  

oui... pas de balises dynamiques en parametre de filtres.
mais

[(#ENV{id_article}|?{' ',''})#URL_LOGOUT]
[(#ENV{id_article}|?{'',' '})pas article]

ca marche

James a écrit :

return generer_url_action('logout',"logout=public&url=" .
rawurlencode($cible ? $cible : self('&')));

ben si je passe une url avec &amp; en cible, le probleme sera le meme, non ?

et le logout=public, il sert à quoi au fait ?

@++

Je crois que le patch faire, en fait, c'est

return generer_url_action('logout',"logout=public&url=" .
rawurlencode($cible ? $cible : self('&')));

je confirme :slight_smile:

c'est commitable ?

pour faire la noisette Formulaire de connexion/Dconnexion, il y
a la balise #SESSION qui existe dj :

effectivement, merci

je profite de l'occasion pour poser une autre question:
pq
[(#URL_LOGOUT|replace{amp;})]
ne vire pas le amp; ??

encore merci

thierry

je profite de l'occasion pour poser une autre question:
pq
[(#URL_LOGOUT|replace{amp;})]
ne vire pas le amp; ??

Il est sans doute rétabli après le passage du filtre...

Olivier G. a écrit :

je profite de l'occasion pour poser une autre question:
pq
[(#URL_LOGOUT|replace{amp;})]
ne vire pas le amp; ??
    
Il est sans doute rétabli après le passage du filtre...
  
URL_LOGOUT est une balise *dynamique*
=> pas de filtres

spipcarto a écrit :

James a écrit :

return generer_url_action('logout',"logout=public&url=" .
rawurlencode($cible ? $cible : self('&')));

ben si je passe une url avec &amp; en cible, le probleme sera le meme, non ?

Oui, mais il ne faut pas de &amp; ici :slight_smile: cette url servira après la suppression du cookie dans une redirection, via header().

et le logout=public, il sert à quoi au fait ?

je suppose que c'est lié au répertoire ecrire/, qu'il n'est pas nécessaire de supprimer quand tu te déconnectes depuis l'espace public... c'est peut-être plus subtil

Bref, j'envoie la correction :slight_smile: