Descrição
[(#ENV{parâmetro, valor padrão})]
Procurar numa tabela subordinada
O nome do parâmetro de ambiente pode conter igualmente barras oblíquas / indicando que a busca dever ser feita numa tabela subordinada. Esta notação é equivalente ao chamado do filtro |table_valeur e também é válida nas tags #GET, #SESSION e #CONFIG.
#ENV{parametro/em/uma/tabela, valor padrão}
// equivalente a:
[(#ENV**{parametre}|table_valeur{em/uma/tabela, valor padrão})]
Enfim, a tag #ENV, por si só, retorna uma tabela serializada de todos os parâmetros de ambiente.
Exemplos
Recuperar um identificados de matéria, senão, a cadeia de caracteres «new»:
#ENV{id_article,new}
Recuperar, num loop, os valores de id_rubrique e de id_mot passados no URL spip.php?rubrique24&id_mot=5
<BOUCLE_art(ARTICLES){id_rubrique=#ENV{id_rubrique}}{id_mot=#ENV{id_mot}}>
…
Recuperar o id_article passado num INCLURE :
<INCLURE{fond=mon_squelette, id_article=136}>
Em meu_template.html, #ENV{id_article}
é 136.
Exemplos avançados
Com o URL ?afficher[articles]=oui, testar se as matérias são exibidas:
#ENV{afficher/articles} // affiche 'oui'
Exibir todo o ambiente (útil para depuração):
[<pre>(#ENV**|unserialize|print_r{1})</pre>]
Importante: Por questões de segurança, é fundamental retirar este código ao fim do desenvolvimento do seu site.
Circundar os tratamentos de segurança
Por padrão, o SPIP aplica as funções interdire_scripts()
e |entites_html à tag #ENV
. Como para todas as tags, pode-se suprimir os tratamentos automáticos do SPIP com #ENV* e #ENV** (ver, para a utilização de * e **, a matéria #TAG* e #TAG**).
- #ENV*
retorna a variável sem aplicar o filtro |entites_html , sem transformar todos os caracteres especiais em entidades HTML.
- #ENV**
retorna a variável sem aplicar igualmente a função interdire_scripts(). Ela reenvia portanto o PHP executado.
Isto pode criar um problema de segurança se esta varável receber uma injeção de código.
No entanto, #ENV**
encontra aplicações, por exemplo na área restrita, onde a função interdire_scripts()
é aplicada de maneira mais restritiva.
#ENV** permite, assim, levantar essas restrições de modo bem localizado. Mas, mais uma vez, só usar com conhecimento de causa!
Ver também
- <INCLURE> d’autres squelettes
- Le filtre |setenv
Em Programmer.spip.net