#ENV

#ENV{parâmetro} recupera as variáveis de ambiente repassadas ao template. Um segundo argumento permite fornecer um valor padrão se o parâmetro requerido não está presente no ambiente ou se o seu conteúdo está vazio.

  • Apparu en : SPIP 1.8

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

Em Programmer.spip.net

Autor Ricardo Porto Publié le :

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