#ENV

Тег используется для того, что бы вывести и иметь возможность использовать значение переменной из URL, переданной в шаблон при помощи директивы #INCLURE или при вызове модели.

  • Apparu en : SPIP 1.8

[(#ENV{variable, default_value})]

#ENV{variable} используется для получения значения переменной окружения в файле шаблона. [1].

Переменную можно передать в шаблон одним из трех способов:

  • явно указать в URL (в HTTP запросе) spip.php?page=test&variable=xyz
  • при подключении шаблона <INCLURE {fond=test} {variable=xyz}>
  • при помощи формы <input type="text" name="variable" value="xyz">

В шаблоне test.html значение #ENV{variable} будет равно "xyz".

Еще примеры

Пример передачи переменной через URL: spip.php?rubrique24&id_mot=5
В шаблоне rubrique.html, #ENV{id_mot} будет равен 5.

При помощи INCLURE:<INCLURE{fond=my_template} {id_article=136}>
В шаблоне my_template.html, #ENV{id_article} равен 136.

Значение по умолчанию

[(#ENV{variable, default_value})]: параметр default_value содержит значение, которое выведет (вернет) тег в случае, если значение variable не задано или пустое (аналогично [(#ENV{variable}|sinon{default_value})]).

Задавать значение по умолчанию очень удобно если текущий шаблон подключается несколькими разными шаблонами и в зависимости от контекста (полученных входящих данных) реализует разный вывод ( разную логику работы).

Отключение фильтров

По умолчанию SPIP применяет interdire_scripts и entites_html фильтры к тегу #ENV. Как и для других тегов, возможно вывести содержимое тега используя запись #ENV* и #ENV** (подробнее в статье #TAG* and #TAG** ).

#ENV* возвращает переменную без обработки ее фильтром entites_html ,т.е. в содержимом все специальный символы не конвертируются в HTML.
#ENV** выводит значение без обработки ее фильтром interdire_scripts [2]

This can pose a security problem if this variable is passed a code injection attack. This is why interdire_scripts is provided by default to disable any < and other <script language=php> references contained in the variable.

Nevertheless, #ENV** has a useful application when constructing some forms. Using the double asterisk is then necessary for displaying CVT forms. For example, to retrieve the table of errors within the form’s template file:
  #ENV**{erreurs}|table_valeur{key}...

   
   
   

Примечания

[1По соображениям безопасности тег #ENV не может вывести переменную с именем PHPSESSID или с именами, которые начинаются с var_ (например var_mode и var_profile).

[2imagine a very simple form:

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

within the displayed form, we could enter: <?php echo date('Y-m-d'); ?> into the "test" field and then validate.

-  #ENV{test} will return (source html) : &lt;?php echo date('Y-m-d'); ?&gt;
-  #ENV*{test} will return (source html) : &lt;?php echo date('Y-m-d'); ?>
-  #ENV**{test} will return (source html) : 2009-02-12 i.e. the executed PHP code.

Автор Serge Markitanenko Publié le :

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