#ENV

Etiqueta que permet obtenir el valor d’una variable facilitada per un #INCLURE o a partir d’un Url.

  • Apparu en : SPIP 1.8

[(#ENV{variable, valeur_par_defaut})] (a partir d’SPIP 1.8)

#ENV{variable} permet accedir a les variables d’entorn d’un esquelet (el seu context) [1].

L’esquelet pot rebre aquesta variable o bé del URL (la petició HTTP), o bé del fitxer que l’inclou, o bé fins i tot d’un retorn de formulari.

Exemple de variable passada a l’url : spip.php?rubrique24&id_mot=5
A dins de rubrique.html, #ENV{id_mot} val 5.

Exemple de variable passada en un INCLURE :<INCLURE{fond=mon_squelette} {id_article=136}>
A dins de mon_squelette.html, #ENV{id_article} val 136.

Valor per defecte

[(#ENV{variable, valeur_par_defaut})] : el paràmetre opcional valeur_par_defaut conté el valor que ha de ser retornat si la variable no existeix (equivalent a [(#ENV{variable}|sinó {valeur_par_defaut})]).

Útil quan un esquelet està inclòs a partir de diferents esquelets, i del que s’espera un comportament diferent segons el context.

Saltar-se els tractaments de seguretat

Par defecte, SPIP aplica les funcions interdire_scripts i entites_html a l’etiqueta #ENV. Com per tota etiqueta, es pot suprimir els tractaments automàtics d’SPIP amb #ENV* i #ENV** (veure, per l’ús de * i **, l’article #BALISE* i #BALISE**).

#ENV* retorna la variable sense aplicar el filtre entites_html, per tant, sense transformar tots els caràcters especials en entitats HTML.
#ENV** retorna la variable sense aplicar la funció interdire_scripts. Retorna, per tant, el PHP executat. [2]
Això pot suposar un problema de seguretat si aquesta variable rep una injecció de codi. Aquest és el motiu del perquè interdire_scripts és allà per defecte per invalidar els < i altres <script language=php> que hi hagi a la variable.

No obstant #ENV** troba una aplicació quan es construeix un formulari. D’aquesta manera, l’’ús de la doble estrella és necessària en la visualització de formularis CVT. Per exemple, per recuperar la taula d’errors a l’esquelet del formulari:
  #ENV**{erreurs}|table_valeur{clef}...

   
   
   

Notes

[1Per seguretat, #ENV no recupera (ni mostra) mai les variables anomenades PHPSESSID o aquelles que el seu nom comença per var_ (com per exemple var_mode et var_profile).

[2imaginem un formulari molt simple:

<form method="get">
<input type="text" name="test" value="#ENV{test}"> <input type="submit">
</form>
#ENV{test}<br />
#ENV*{test}<br />
#ENV**{test}<br />

al formulari mostrat, entrem: <?php echo date('Y-m-d'); ?> a dins del camp «test», i, després, validem.

-  #ENV{test} enviarà (codi html): &lt;?php echo date('Y-m-d'); ?&gt;
-  #ENV*{test} retornarà (codi html): &lt;?php echo date('Y-m-d'); ?>
-  #ENV**{test} retornarà (codi html) : 2009-02-12 és a dir el php executat.

Autor merce Publié le : Mis à jour : 26/10/12

Traductions : عربي, català, English, Español, français, Nederlands, русский, Türkçe, українська