Условные выражения
Сами переменные окружения редко применяются для их вывода на страницу. Гораздо полезнее сравнивать их с некоторым значением и в зависимости от этого сравнения принимать решение о выводе текста. Такое сравнение называется условным выражением и встречается практически во всех языках программирования. Условные выражения есть и в SSI, в общем виде они записываются так.
<!--#if expr="условие1"-->
Если условие1 истинно, то будет выводиться этот текст.
<!--#elif expr="условие2"-->
Если условие1 ложно, а условие2 истинно, тогда вместо первого текста выводится этот.
<!--#else-->
Данный текст выводится, если условие1 и условие2 оба ложны.
<!--#endif-->
Не обязательно использовать эту конструкцию целиком, вполне можно вставлять её частично, например так.
<!--#if expr="условие1" -->
Если условие1 истинно, что-нибудь вывести.
<!--#endif -->
В этом случае если условие выполняется, то будет выводиться текст или код внутри <!--#if--> и <!--#endif-->, в противном случае, т. е. когда условие1 ложно, то конструкция пропускается и текст не отображается.
В табл. 1 перечислены возможные выражения, которые возвращают истину при соблюдении описанных условий.
Условие | Описание |
---|---|
str | Строка str не пустая. |
!str | Строка str пустая. |
str1=str2 | Значение str1 равно str2. |
str1!=str2 | Значение str1 НЕ равно str2. |
str1<str2 | Значение str1 меньше str2. |
str1<=str2 | Значение str1 меньше или равно str2. |
str1>str2 | Значение str1 больше str2. |
str1>=str2 | Значение str1 больше или равно str2. |
str1 && str2 | Строка str1 И строка str2 не пустые. |
str1 || str2 | Строка str1 ИЛИ строка str2 не пустые. |
Сложные выражения можно брать в круглые скобки, например, написать так:
(str1>0) && (str1<5)
Это условие возвращает истину, когда str1 больше нуля и меньше пяти. Под истиной и ложью подразумевается выполнение логического или математического соответствия, так, 1>0 это истина, а 1<0 ложь.
Для использования переменных окружения в условных выражениях перед именем переменной следует поставить знак $. Текст и сравниваемые значения берутся в слэш (/текст/). Если внутри значения встречается символ /, то значение можно экранировать следующим образом.
\"/path/to/server\"
'/path/to/server'
Текст пишется внутри \" и \" или обрамляется одинарными кавычками. В примере 1 показано использование условия и переменной REMOTE_ADDR для сравнения IP-адреса со значением 127.0.0.1.
Пример 1. IP-адрес
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>SSI</title>
</head>
<body>
<!--#if expr="($REMOTE_ADDR = /127.0.0.1/)"-->
<p>Вы зашли с локального адреса.</p>
<!--endif-->
</body>
</html>