Description
[(#ENV{paramètre, valeur par défaut})]
Chercher dans un sous tableau
Le nom du paramètre d’environnement peut également contenir des barres obliques / indiquant de chercher dans un sous tableau. Cette écriture est équivalente à l’appel du filtre |table_valeur et est aussi valide sur les balises #GET, #SESSION et #CONFIG.
#ENV{parametre/dans/un/tableau, valeur par défaut}
// équivalent à :
[(#ENV**{parametre}|table_valeur{dans/un/tableau, valeur par défaut})]
Enfin, la balise #ENV toute seule retourne un tableau sérialisé de tous les paramètres d’environnement.
Exemples
Récupérer un identifiant d’article, sinon la chaîne « new » :
#ENV{id_article,new}
Récupérer dans une boucle les valeurs de l’id_rubrique et de l’id_mot passées dans l’URL spip.php?rubrique24&id_mot=5
<BOUCLE_art(ARTICLES){id_rubrique=#ENV{id_rubrique}}{id_mot=#ENV{id_mot}}>
…
Récupérer l’id_article passée dans un INCLURE :
<INCLURE{fond=mon_squelette, id_article=136}>
Dans mon_squelette.html, #ENV{id_article}
vaut 136.
Exemples avancés
Avec dans l’URL ?afficher[articles]=oui, tester si on affiche les articles :
#ENV{afficher/articles} // affiche 'oui'
Afficher tout l’environnement (utile pour débugguer) :
[<pre>(#ENV**|unserialize|print_r{1})</pre>]
Important : Pour des questions de sécurité, il faudra absolument retirer ce code à la fin de développement de votre site.
Court-circuiter les traitements de sécurité
Par défaut, SPIP applique les fonctions interdire_scripts()
et |entites_html à la balise #ENV
. Comme pour toute balise, on peut supprimer les traitements automatiques de SPIP avec #ENV* et #ENV** (voir, pour l’usage de * et **, l’article #BALISE* et #BALISE**).
- #ENV*
retourne la variable sans appliquer le filtre |entites_html , donc sans transformer tous les caractères spéciaux en entités HTML.
- #ENV**
retourne la variable sans appliquer également la fonction interdire_scripts(). Elle renvoie donc le PHP exécuté.
Ceci peut poser un problème de sécurité si cette variable reçoit une injection de code.
Néanmoins #ENV**
trouve des applications, par exemple dans l’espace privé où la fonction interdire_scripts()
est appliquée de façon plus restrictive. #ENV** permet alors de lever ces restrictions de façon très localisée. Mais encore une fois, à utiliser en connaissance de cause !
Voir aussi
- <INCLURE> d’autres squelettes
- Le filtre |setenv
Sur Programmer.spip.net