Carnet Wiki

BaliseHTTPVARS (Archive)

voir http://www.spip.net/fr_article1902.html

Historique de #ENV

La balise a été introduite avec le nom #HTTP_VAR le 12/12/04.
La balise a été renommée #ENV le 24 janvier 2005.

Les informations sur cette page sont maintenant intégrées à la doc officielle

La balise #ENV{nom} retourne la valeur du paramètre nom fourni par le client du serveur HTTP, que la méthode soit GET ou POST.

En particulier, cette balise donne les valeurs saisies par l’utilisateur d’un formulaire renvoyé au serveur.

Utilisée dans une squelette inclus dans un autre, cette balise retourne la valeur associée à nom dans le tableau $contexte_inclus.

Cette balise est reconnue :

1. dans les critères
— de comparaison (ex : {titre=#ENV{titre}} compare le champ SQL « titre » au champ de formulaire « titre ») ;
— de limitation (ex : {#ENV{debut},n-#ENV{fin}} exclut les debut premières et les fin dernières lignes d’une BOUCLE ;

2. dans les valeurs des paramètres du INCLURE (ex : <INCLURE(foo.php){id_article=#ENV{numero}}> inclus le squelette « foo » de sorte que la balise #ID_ARTICLE et le critère {id_article} auront comme valeur celle du champ de formulaire « numero » ;

3. en tout autre point d’un squelette, avec la syntaxe usuelle [....(#ENV{nom})....], ce qui remplace donc l’interpolation beaucoup moins efficace <?php echo $GLOBALS['nom'] ?>.

Cette balise répond aux demandes d’extension concernant les critères de BOUCLE et les paramètre de INCLUDE, et aux interpolations de PHP très fréquentes dans les squelettes. Cette balise généralisant l’usage du signe % dans les critères, L’usage du signe % est désormais OBSOLÈTE.

Second argument de la balise

Comment faire un annuaire classé par lettre ?

Avec la balise #ENV tu pourras écrire :

<BOUCLE_zer(ARTICLES){titre==#ENV{lettre,.}}>
#ID_ARTICLE
</BOUCLE_zer>

si lettre=^a est passée dans l’url, tu auras ceux qui s’apellent Adrien, Adam, etc.

sinon tu auras ceux qui matchent la partie « second argument » de #ENV

En gros #ENV{variable,sinon} affiche la valeur de la variable, et si elle est vide affiche « sinon ». Et ça marche à l’intérieur des critères.

Par contre gaffe à l’injection de code SQL par ce biais, je ne suis pas certain que ce soit impossible (même si je ne vois pas comment faire, à priori).

Des exemples d’utilisation figurent dans les nouveaux squelettes de la CVS.

Par défaut la balise #ENV applique le filtre htmlspecialchars (nouveau 1.8). Il est comme d’habitude toujours possible de le neutraliser par une étoile (ENV*{foo}).

Étant données les spécifications de htmlspecialchars, il faut utiliser les guillemets plutôt que l’apostrophe lorsqu’on met cette balise comme valeur d’un attribut HTML.

- Mise à jour :25 octobre 2015 à 21h35min