SSI (программирование)

SSI (Server Side Includes — включения на стороне сервера) — несложный язык для динамической «сборки» веб-страниц на сервере из отдельных составных частей и выдачи клиенту полученного HTML-документа. Реализован в веб-сервере Apache при помощи модуля mod_include. Включённая в настройках по умолчанию веб-сервера возможность позволяет подключать HTML-файлы, поэтому для использования инструкций файл должен оканчиваться расширением .shtml, .stm или .shtm

Необходимо помнить, что некоторые сервисы не исполняют команды SSI, если расширение файла будет отличным от приведённых выше, например, .html.

Синтаксис SSI позволяет включать в текст страницы другие SSI-страницы, вызывать внешние CGI-скрипты, реализовывать условные операции (if/else), работать с переменными и т. п. Благодаря крайней простоте языка сборка SSI-страниц происходит очень быстро, однако, многие возможности полноценных языков программирования, например, работа с файлами, в SSI отсутствуют.

Отдельные элементы синтаксиса SSI используются и в других скриптовых языках, например в ASP.

Основные команды SSI

  • config — устанавливает формат сообщений об ошибках, дат и размера
  • set — устанавливает значение переменной
  • printenv — выводит список переменных окружения
  • echo — вставляет значение переменной
  • flastmod — вставляет дату и время изменения файла
  • fsize — вставляет размер файла
  • include — вставляет содержимое другого файла
  • if, elif, else, endif — условные операторы

Описание

config — контролирует различные аспекты сканирования. Его атрибутами могут быть:

  • errmsg — устанавливает сообщение, выводящееся при возникновении ошибки; в большинстве случаев целесообразно установить в пустую строку;
  • sizefmt — устанавливает формат, в котором будет выводиться размер файла.
  • timefmt — устанавливает формат, в котором будет выводиться дата. Формат соответствует передаваемому библиотечной функции strftime;

Переменные для sizefmt:

<!--#config sizefmt="abbrev"--> Выводит размер файла в килобайтах: (17k)
<!--#config sizefmt="bytes"--> Выводит размер файла в байтах (17,076)

Переменные для timefmt:

Формат Описание Пример
%a Краткое название дня недели Mon
%A Полное название дня недели Monday
%b Аббревиатура названия месяца Dec
%B Полное название месяца December
%d День месяца 01 (не 1)
%D Дата в формате "%m/%d/%y" 12/31/99
%e День месяца 13
%H Часы в 24-часовом формате 13
%I Часы в 12-часовом формате 01
%j День года 235
%m Номер месяца 01
%M Минуты 03
%p AM/PM (до полудня/после) AM
%r Время в формате "I:M:S p" 11:35:46 PM
%S Секунды 34
%s Время в секундах с 01.01.1970 957228726
%T Время в формате "%H:%M:%S" 14:05:34
%U Неделя года 16
%w Номер дня недели 4
%y Год в формате ГГ 99
%Y Год в формате ГГГГ 1999
%Z Временная зона MSK

Обратите внимание на то, что команды #config sizefmt и #config timefmt влияют на все связанные с ними SSI-команды от того места, откуда они были вызваны и до самого конца страницы. Поэтому каждый вызов команд #flastmod и #fsize лучше снабжать своей командой #config.

set — устанавливает значение переменной. Её атрибутами являются var, определяющий имя переменной, и value, определяющий её значение.

  • Подстановка переменных

Подстановка переменных производится внутри заключённых в кавычки строк в большинстве аргументов SSI директив. В этих случаях знак доллара можно вставить, предварив его слешом:

<!--#if expr="$a = \$test" -->

Для предотвращения двусмысленности можно заключать имя переменной в фигурные скобки:

<!--#set var="Zed" value="${a}bc_${abc}" --> 

В результате такого присвоения переменная Zed будет иметь значение «Xbc_Y», если переменная a равна X, а переменная abc равна Y.

printenv — Выводит список так называемых «переменных окружения» с их значениями. Вызывается без параметров.

Переменные окружения:

  • DOCUMENT_ROOT (название основной папки для веб-страниц на сервере, обычно ваша папка public_html и путь к ней)
  • USER_AGENT и HTTP_USER_AGENT (название браузера, которым пользуется посетитель)
  • REMOTE_ADDR (IP-адрес посетителя)
  • REMOTE_HOST (адрес посетителя в нормальной форме — например, adsl53.peterlink.ru)
  • SERVER_ADDR (IP-адрес вашего сайта)
  • SERVER_NAME и HTTP_HOST (адрес сервера, типа userguide.webservis.ru)
  • DOCUMENT_URI, REQUEST_URI и SCRIPT_NAME (запрошенная вами страница, типа /examples/mysqlexample.shtml)
  • DOCUMENT_NAME (имя файла (без каталогов) документа, запрошенного пользователем)
  • SCRIPT_FILENAME (полный путь к веб-странице на сервере. Например /home/home-webservis/public_html/ и так далее)
  • SERVER_SOFTWARE (название сервера, например, Apache/1.3.2 (Unix))
  • SERVER_ADMIN (почтовый адрес владельца сервера, указанный при установке)
  • DATE_LOCAL (сегодняшние время и дата в вашем часовом поясе (для сервера))
  • DATE_GMT (текущее время по Гринвичу)
  • LAST_MODIFIED (дата последней модификации документа, запрошенного пользователем. То есть во вложенном SSI эта переменная будет содержать имя «главного» документа, а не вложенного)
  • HTTP_COOKIE (строка Cookie, установленная для текущего домена)

echo — выводит значение установленной переменной SSI. Допустимые атрибуты:

  • var (обязательный) — имя выводимой переменной;
  • encoding (необязательный) — перекодировка значения переменной перед выводом. Действует в версиях Apache 1.3.12 и выше. В версиях Apache 2.2.6 и выше по умолчанию символы кодируются в windows-1252 из-за чего ssi переменные окружения с русскими символами при отображении в документе портятся и выглядят как кракозябры, во избежание этого всегда указывайте encoding="none". Обратите внимание, что будучи заданным, этот атрибут должен предшествовать атрибуту var. Варианты значений атрибута encoding:
    • entity (по умолчанию) — будет произведено преобразование специальных HTML-символов в сущности;
    • url — будет произведено т.н. %-преобразование, то есть пригодное для указания в строке URL;
    • none — не будет производиться никаких преобразований.

flastmod — выводит дату последней модификации файла в определённом с помощью timefmt формате. Атрибуты аналогичны атрибутам fsize.

fsize — выводит размер файла в определённом с помощью sizefmt формате. Допустимые атрибуты:

  • file — определяет путь к файлу, относительно сканируемого документа;
  • virtual — определяет стандартный кодированный URL, относительно сканируемого документа, или, при наличии в начале слеша (/) — относительно корня документов узла.

include — включает текст другого документа или файла в сканируемый файл. К включаемому файлу применяются все установленные правила ограничения доступа. Если для каталога, из которого включается файл, установлена опция IncludesNOEXEC, и включение данного документа привело бы к запуску программы, то документ не включается, и выводится сообщение об ошибке. CGI сценарии вызываются, как обычно с помощью URL, который может содержать кодированную строку запроса (query string). Положение файла указывается с помощью атрибутов:

  • file — указывает путь, относительно сканируемого документа; путь не может содержать ../ и не может быть абсолютным путём; всегда предпочтительнее использовать атрибут virtual;
  • virtual — содержит кодированный URL, относительный или абсолютный; URL не может содержать имя протокола или имя хоста, и может содержать строку запроса.

Условные операторы

Базовыми элементами контроля являются:

<!--#if expr="test_condition" -->
<!--#elif expr="test_condition" -->
<!--#else -->
<!--#endif -->

Элементы elif и else являются необязательными.

Элемент endif заканчивает элемент if и является обязательным.

test_condition может быть одним из следующих:

  • string — истинно, если string не пуста;
  • string1 = string2
  • string1 != string2
  • string1 < string2
  • string1 <= string2
  • string1 > string2
  • string1 >= string2
  • всё вышеперечисленное истинно, если выполняется условие сравнения;
  • string1 ~ string2 — истинно, если string1 содержит в себе string2;
  • string1 ~= /string2/ — истинно, если string1 содержит в себе string2, а string2 — регулярное выражение Unix (см. ниже).

Если string2 имеет форму /string/, то тогда она интерпретируется, как регулярное выражение. Их синтаксис аналогичен синтаксису регулярных выражений в Unix команде egrep;(см. Регулярные выражения)
(test_condition) — истинно, если test_condition истинно;
! test_condition — истинно, если test_condition ложно;
test_condition1 && test_condition2 — истинно, если как test_condition1, так и test_condition2 истинны;
test_condition1 || test_condition2 — истинно, если хотя бы test_condition1 или test_condition2 истинно.
«=" и "!=" имеют больший приоритет, чем "&&» и «||», а «!» имеет наивысший приоритет.

Все, что не распознаётся, как переменная, считается строкой. Если строка имеет пробелы или символы табуляции, то её надо заключать в кавычки.
О чём стоит помнить, так это о том, что лучше не использовать SSI-команды при создании страниц в редакторах типа Front Page — они их обычно не понимают и выкидывают, и о том, что одну SSI-команду нельзя вызвать из другой (как нельзя вызвать SSI-команду из скрипта, и скрипт из скрипта).

Примеры

Задание сообщения обработчика ошибок

<!--#config errmsg="[При открытии страницы произошла ошибка. Пожалуйста, сообщите об этом владельцу сайта.]" -->

Задание формата вывода даты и времени

<!--#config timefmt="%d/%m/%y" -->           Выведет:  03/07/06
<!--#config timefmt="%d/%m/%Y, %H:%M:%S" --> Выведет:  03/07/2006, 20:16:33

Задание переменных

http://<!--#echo var="HTTP_HOST"--><!--#echo var="DOCUMENT_URI"-->

Выведет: 
http://ru.wikipedia.org/w/index.php?title=SSI_(программирование)

Вставка даты модификации файла

<!--#flastmod file="file.html"-->

Вставка содержимого файла

<!--#include file="footer.html"-->
<!--#include virtual="header.asp"-->
<!--#include virtual="/right.links.txt"--> 

Проверка условия

<!--#if expr="test_condition"-->
<!--#elif expr="test_condition"-->
<!--#else-->
<!--#endif--> 

Read other articles:

NAGE redirects here. For the Indonesian people, see Nage. For the poaching liquor, see Nage (food). NAGENational Association of Government EmployeesFoundedJuly 16, 1961HeadquartersQuincy, MassachusettsLocationUnited StatesMembers 43,460[1]Key peopleDavid J. Holway, presidentAffiliationsSEIU, CtWWebsitewww.nage.org The National Association of Government Employees (NAGE) is a registered labor union with the United States Department of Labor representing approximately 43,000[2] m...

 

 

President of Guyana since 2020 (born 1980) His ExcellencyMohamed Irfaan AliAli in 202010th President of GuyanaIncumbentAssumed office 2 August 2020Vice PresidentBharrat JagdeoPrime Minister (also First Vice President)Mark PhillipsPreceded byDavid A. GrangerMinister of Housing and WaterIn office7 January 2009 – 20 May 2015PresidentDonald RamotarPrime MinisterSam HindsPreceded byHarrinarine NawbattSucceeded byRonald Bulkaan[a]Chairman of the Caribbean CommunityIncumbentAs...

 

 

Untuk orang lain dengan nama yang sama, lihat Thomas Hyde. Thomas W. HydeLahir(1841-01-16)16 Januari 1841Firenze, ItaliaMeninggal14 Desember 1899(1899-12-14) (umur 58)Fort Monroe, VirginiaTempat pemakamanOak Grove Cemetery, Bath, MainePengabdianAmerika SerikatUnionDinas/cabangAngkatan Darat Amerika SerikatUnion ArmyLama dinas1861 - 1865Pangkat Kolonel Brevet Mayor JenderalKesatuan7th Maine Volunteer Infantry RegimentKomandan1st Maine Veteran Volunteer Infantry RegimentPerang/pertemp...

Darya MorozDarya Moroz pada tahun 2009LahirDarya Yurievna Moroz1 September 1983 (umur 40)Leningrad, RSFSR, USSRPekerjaanAktrisTahun aktif1984–sekarangSuami/istriKonstantin Bogomolov (cerai)Anak1PenghargaanNika Award Darya Yurievna Moroz (bahasa Rusia: Да́рья Ю́рьевна Моро́з; lahir 1 September 1983) adalah seorang aktris film, dan teater asal Russia, Honored Artist of Russia (2015).[1] Ia memenangkan dua kali penghsrgaan Nika Award (2009, 2015).[...

 

 

Shopping mallWoodbine CentreWoodbine Centre Atrium in 2023Coordinates43°43′13″N 79°36′01″W / 43.72028°N 79.60028°W / 43.72028; -79.60028Address500 Rexdale BoulevardToronto, OntarioM9W 6K5Opening date1985DeveloperCadillac FairviewOwnerWoodbine Mall HoldingsArchitectCrang and Boake Incorporated[1]No. of stores and services107No. of anchor tenants2Total retail floor area750,000 sq ft (69,677 m2)[2]No. of floors2WebsiteWoodbine Ce...

 

 

Government agency Public Prosecution Service of CanadaService des poursuites pénales du CanadaAgency overviewFormed2006 (2006)PrecedingFederal Prosecution ServiceJurisdictionCanadaHeadquarters160 Elgin Street – 12th Floor, Ottawa, Ontario, K1A 0H8Employees1040170 private-sector law firms432 individually appointed lawyersAnnual budget$201,300,000 (2018–19)[1]Minister responsibleHon. Arif Virani, Attorney General of CanadaAgency executiveKathleen Roussel, Director of Public Pr...

Belgian footballer (born 1989) Toby Alderweireld Alderweireld with Tottenham Hotspur in 2020Personal informationFull name Tobias Albertine Maurits Alderweireld[1]Date of birth (1989-03-02) 2 March 1989 (age 35)[2]Place of birth Antwerp, BelgiumHeight 1.86 m (6 ft 1 in)[3]Position(s) Centre-backTeam informationCurrent team Royal AntwerpNumber 23Youth career1994–1999 Germinal Ekeren1999–2004 Germinal Beerschot2004–2008 AjaxSenior career*Years Te...

 

 

此條目可参照英語維基百科相應條目来扩充。 (2021年5月6日)若您熟悉来源语言和主题,请协助参考外语维基百科扩充条目。请勿直接提交机械翻译,也不要翻译不可靠、低品质内容。依版权协议,译文需在编辑摘要注明来源,或于讨论页顶部标记{{Translated page}}标签。 约翰斯顿环礁Kalama Atoll 美國本土外小島嶼 Johnston Atoll 旗幟颂歌:《星條旗》The Star-Spangled Banner約翰斯頓環礁�...

 

 

Salah satu tokoh Balian di Kalimantan Selatan. Balian adalah rohaniawan dalam agama Kaharingan yang terkenal dikalangan suku Dayak Ngaju, suku Dayak Meratus, serta suku Dayak lainnya yang juga masih menganut agama Kaharingan. Seorang Balian bertugas memimpin ritual keagamaan Kaharingan, berurusan dengan Dunia Atas dan Dunia Bawah dari para roh manusia yang telah meninggal, serta bertugas memanggil Sangiang sebagai juru damai dalam suatu peristiwa yang menjadi topik pada suatu upacara keagamaa...

Часть серии статей о ХолокостеИдеология и политика Расовая гигиена Расовый антисемитизм Нацистская расовая политика Нюрнбергские расовые законы Шоа Лагеря смерти Белжец Дахау Майданек Малый Тростенец Маутхаузен Освенцим Собибор Треблинка Хелмно Юнгфернхоф Ясеновац...

 

 

Armed conflict Attacks on U.S. bases in Iraq, Jordan, and SyriaPart of the spillover of the Israel–Hamas war and the Iran–Israel proxy conflictTop: The USS Dwight D. Eisenhower and the USS Gerald R. Ford carrier strike groups in November 2023Bottom: Map of Iran-backed strikes (red) and American counterstrikes (blue) in Iraq, Jordan, and SyriaDate17 October 2023 – 4 February 2024(3 months, 2 weeks and 4 days) 22 April 2024[10] – presentLocationIraq, Jordan, and S...

 

 

Overview of the high-speed rail system in the United Kingdom See also: High-speed rail in Europe Operational high-speed lines in the UK:   140–186 mph (225–300 km/h)   125 mph (200 km/h)   <110 mph (180 km/h) High-speed rail in the United Kingdom is provided on five upgraded railway lines running at top speeds of 125 mph (200 km/h) and one purpose-built high-speed line reaching 186 mph (300 km/h). Trains cu...

For the British humanitarian, see Saif Uddin Ahmad. For the Danish cricketer, see Saif Ahmad (cricketer). Bangladeshi-American restaurateur and poker player Saifuddin AhmadAhmad at the 2007 World Series of Poker.ResidenceNewport Beach, CaliforniaWorld Series of PokerBracelet(s)1Money finish(es)2Highest ITMMain Event finishNoneWorld Poker TourTitle(s)NoneFinal table(s)NoneMoney finish(es)1 Saifuddin Saif Ahmad is a Bangladeshi-American restaurateur and World Series of Poker champion. Ahmad is ...

 

 

Species of mammal Mexican cottontail Conservation status Least Concern  (IUCN 3.1)[1] Scientific classification Domain: Eukaryota Kingdom: Animalia Phylum: Chordata Class: Mammalia Order: Lagomorpha Family: Leporidae Genus: Sylvilagus Species: S. cunicularius Binomial name Sylvilagus cunicularius(Waterhouse, 1848) Mexican cottontail range Synonyms[5] Lepus cunicularius Waterhouse, 1848[2] Lepus vera-crucis Thomas, 1890[3] Lepus insolitus Allen, 1890&#...

 

 

Annual music festival in New Orleans, Louisiana, U.S. Lost Bayou Ramblers at the French Quarter Festival French Quarter Festival is a free, annual music festival held in early April, located in the historic French Quarter of New Orleans, Louisiana. Founded in 1983 with the first festival held in 1984, the festival features primarily New Orleans music, such as jazz, blues, and zydeco from hundreds of local musicians, as well as food from dozens of New Orleans restaurants.[1] In April 2...

2006 Long Beach, California, mayoral election ← 2002 April 11, 2006 (first round)[1]June 6, 2006 (runoff)[2] 2010 →   Candidate Bob Foster Frank Colonna Doug Drummond Party Nonpartisan Nonpartisan Nonpartisan First-round vote 20,999 12,348 8,271 First-round percentage 48.5% 28.5% 19.1% Second-round vote 32,298 24,287 Second-round percentage 57.0% 42.9% Mayor before election Beverly O'Neill Nonpartisan Elected Mayor Bob Foster Nonpartisan Elections i...

 

 

Theodor-Heuss-Gymnasium Heilbronn Schulform Gymnasium Schulnummer 04103986 Gründung 1950 Ort Heilbronn Land Baden-Württemberg Staat Deutschland Koordinaten 49° 8′ 34″ N, 9° 13′ 37″ O49.1426388888899.2268055555556Koordinaten: 49° 8′ 34″ N, 9° 13′ 37″ O Träger Stadt Heilbronn Schüler ca. 520 (2019)[1] Lehrkräfte ca. 50 (2019)[1] Leitung Frank Martin Beck Website www.thg-heilbronn.de Das Theodor...

 

 

American politician (born 1960) For other people named James Kelly, see James Kelly (disambiguation). James M. KellyKelly in August 2020Assistant Commandant for ReserveIn officeJune 14, 2021 – June 18, 2022Preceded byTodd C. Wiemers[1]Succeeded byMiriam L. LaffertyMember of the Maryland House of Delegatesfrom the 9B districtIn officeJanuary 11, 1995 – August 31, 2001Succeeded byMelissa J. Kelly Personal detailsBorn (1960-07-05) July 5, 1960 (age ...

Second crewed mission to orbit the Moon Apollo 10Apollo 10's Lunar Module, Snoopy, approaches the Command and Service Module Charlie Brown for redockingMission typeCrewed lunar orbital CSM/LM flight (F)OperatorNASACOSPAR IDCSM: 1969-043A[1]LM: 1969-043CSATCAT no.CSM: 3941LM: 3948Mission duration8 days, 3 minutes, 23 seconds Spacecraft propertiesSpacecraftApollo CSM-106LM-4ManufacturerCSM: North American RockwellLM: GrummanLaunch mass42,775 kg[2]Landing mass4,945...

 

 

Orbit around Earth between 160 and 2000 km A view from the International Space Station in a low Earth orbit (LEO) at about 400 km (250 mi), with yellow-green airglow visible at Earth's horizon, where roughly at an altitude of 100 km (62 mi) the boundary between Earth and outer space lies and flying speeds reach orbital velocities. A low Earth orbit (LEO) is an orbit around Earth with a period of 128 minutes or less (making at least 11.25 orbits per day) and an eccentricity...