#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]

Це може стати проблемою безпеки, якщо ця змінна передає code injection attack. Ось чому interdire_scripts за замовчуванням відключає будь-які < та інші <script language=php> посилання, що містяться у змінній.

Незважаючи на це, #ENV** має застосується при побудові деяких форм. Використайте подвійну зірочку для відображення CVT форми. Наприклад, щоб отримати таблицю помилок у файлі шаблону у вигляді:
  #ENV**{erreurs}|table_valeur{key}...

   
   
   

Примітки

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

[2уявіть дуже просту форму:

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

коли форма відобразиться, ми могли б ввести: <?php echo date('Y-m-d'); ?> до поля «test», а потім перевірити.

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

Автор olly Publié le : Mis à jour : 06/07/15

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