critère {id_rubrique?} vide #2183

Closed
opened 10 years ago by miros · 4 comments
miros commented 10 years ago

Soit, dans le squelette machin.html, une boucle ARTICLES avec un critère {id_rubrique ?}.

Dans spip<3, ?page=machin&id_rubrique= renvoyait des articles (tous ceux du site)
Ici, SPIP 3.0.0-alpha1 [18242] ne renvoie aucun article.

Exemple pour un site en 1.9 : squelette http://www.audio-lingua.eu/squelettes/recherche.html
http://www.audio-lingua.eu/spip.php?page=recherche&id_rubrique=1&recherche=chocolat
http://www.audio-lingua.eu/spip.php?page=recherche&id_rubrique=&recherche=chocolat

Est-ce une erreur de compilation ou faut-il revoir la boucle ?

Soit, dans le squelette machin.html, une boucle ARTICLES avec un critère {id_rubrique ?}. Dans spip<3, ?page=machin&id_rubrique= renvoyait des articles (tous ceux du site) Ici, SPIP 3.0.0-alpha1 [18242] ne renvoie aucun article. Exemple pour un site en 1.9 : squelette http://www.audio-lingua.eu/squelettes/recherche.html http://www.audio-lingua.eu/spip.php?page=recherche&id_rubrique=1&recherche=chocolat http://www.audio-lingua.eu/spip.php?page=recherche&id_rubrique=&recherche=chocolat Est-ce une erreur de compilation ou faut-il revoir la boucle ?
Owner

Auparavant le compilateur ne permettait pas de rechercher une valeur '0' avec un critère conditionnel. Cela a donc été modifié. Mais du coup une chaine vide '' est aussi prise en compte.

Seule la valeur null est ignorée (correspondant à une valeur non renseignée), mais cela interdit donc aussi d'annuler une valeur a la faveur d'une inclusion
<INCLURE{fond=truc,env,id_rubrique=''} /> et on ne sait pas générer simplement une valeur null ni retirer une valeur de env à l'inclusion.

J'aurais donc tendance à dire que la valeur vide '' doit être ignorée comme auparavant et à confirmer le bug.

Auparavant le compilateur ne permettait pas de rechercher une valeur '0' avec un critère conditionnel. Cela a donc été modifié. Mais du coup une chaine vide '' est aussi prise en compte. Seule la valeur null est ignorée (correspondant à une valeur non renseignée), mais cela interdit donc aussi d'annuler une valeur a la faveur d'une inclusion `<INCLURE{fond=truc,env,id_rubrique=''} />` et on ne sait pas générer simplement une valeur null ni retirer une valeur de env à l'inclusion. J'aurais donc tendance à dire que la valeur vide '' doit être ignorée comme auparavant et à confirmer le bug.
Owner

ah d'ailleurs r18140 dénonçait déjà ce bug !

ah d'ailleurs r18140 dénonçait déjà ce bug !
Owner

OK r18140 corrige correctement le bug. Mais dans le cas id_xxx l'écran de sécurité applique le filtre intval sur les valeurs provenant de l'URL, compte tenu que ces clés ne peuvent être que numériques. id_rubrique est donc injecté avec une valeur zero (0) et non vide dans le squelette, d'où sa prise en compte par le critère conditionnel.

OK r18140 corrige correctement le bug. Mais dans le cas id_xxx l'écran de sécurité applique le filtre intval sur les valeurs provenant de l'URL, compte tenu que ces clés ne peuvent être que numériques. id_rubrique est donc injecté avec une valeur zero (0) et non vide dans le squelette, d'où sa prise en compte par le critère conditionnel.
Owner

Corrigé par r18255
Statut changé à Fermé

Corrigé par r18255 **Statut changé à Fermé**
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.