Servera puse iekļāvumi (SSI – Server Side Includes) ir ērts veids kā daļēji automatizēt lapu veidošanu. Ar SSI palīdzību iespējams ievietot tekstā dažādu mainīgo vērtības, citus dokumentus vai pat citu programmu izvadītos rezultātus. Pirms nosūtīšanas lietotājam, SSI lapu saturu tīmekļa serveris papildina atbilstoši SSI komandām.
Lai serverī varētu izmantot SSI, ir jābūt:
Neliels ieskats SSI pielietojumā redzams shēmā. Šajā piemērā redzams dažādu gan pašdefinētu, gan no sistēmas iegūtu mainīgo izmantošana. Tāpat redzams lapas galviņas un nobeiguma izveide izmantojot atsevišķus failus.
Lai arī SSI komandas nav daudz, to iespējas ir lielas. SSI komandas ir: 'config', 'echo'', 'elif'', 'else'', 'endif'', 'exec'','fsize'', 'flastmod'', 'if'', 'include'', 'printenv'', 'se't'. Pieejamās komandas un to pareizrakstība var būtiski atšķirties dažādām tīmekļa servera versijām un konfigurācijām.
Ja serveris failā sastop nepazīstamu vai neatļautu komandu, tiek ievietots paziņojums [an error occurred while processing this directive], piemēram, parasti ir aizliegta komanda 'exec'', tādēļ uzrakstot <!--#exec cmd="ls" -->
netiks vis izdrukāts failu saraksts, bet gan parādīsies kļūdas paziņojums:
[an error occurred while processing this directive]
Šajā aprakstā tiks apskatīti tikai daži SSI pielietojuma piemēri. Tiem, kuri vēlas uzzināt ko vairāk, var apskatīties Apache http servera dokumentāciju:
http://priede.bf.lu.lv/manual/howto/ssi.html
http://priede.bf.lu.lv/manual/mod/mod_include.html
Izmantojot SSI ir vājas iespējas noskaidrot, kas notiekas lietotāja pusē. Tādam nolūkam ir javas sīkprogrammas un stilu lapas. Failu veidošana un labošana, datu bāzu aptauja un papildināšana arī neietilpst SSI pienākumos.
Pirmkārt, failam jāpiešķir pareizs paplašinājums. Fakultātes servera gadījumā tas ir '*.shtml', piemēram, direktorijas noklusētais fails varētu saukties 'pamatlapa.shtml' vai 'index.shtml'.
SSI komanda rakstāma pēdiņās. Vispārējs pieraksts ir:
<!--#komanda mainīgais="vērtība" mainīgais2="vērtība2" ... -->
SSI komandas nedrīkst rakstīt WYSIWYG režīmā, jo tajā trīstūriekavas tiek aizstātas ar šo simbolu nosaukumiem – < un >.
SSI komandas serveros, kuros nav SSI atbalsta, nekādi netraucē, jo, lai arī lietotājs saņem failu ar visām tajā ierakstītajām SSI komandām, tās pārlūkā apskates režīmā nav redzamas. SSI tiek uztverti kā lapas veidotāja piezīmes, jo SSI pareizrakstība ir līdzīga kā piezīmēm – sākas ar '<!--
un noslēdzas ar ' -->
'
Faila izveides un pēdējās labošanas datumi ir svarīgas tīmekļa lapu daļas. Faila izveides datumu var ierakstīt vienreiz un tas vēlāk nemainās, turpretī labošanas datums manās vienmēr, kad fails tiek labots. Katrreiz to mainīt ar roku ir apnicīgi un, parasti, to aizmirst izdarīt. To var automatizēt izmantojot SSI komandu:
<!--#echo encoding="none" var="LAST_MODIFIED" -->
Tue Oct 20 09:18:42 2015
Datums tiek izveidots ņemot vērā serverī izmantoto datuma formātu. Datuma formātu iespējams faila ietvaros mainīt pat vairākkārtīgi izmantojot komandu <!--#config timefmt=".." -->
, kur kā datuma formātu nosaka parametra 'timefmt ' vērtības.
Piemēram, uzrakstot
<!--#config timefmt="%Y.%m.%d-%H:%M" -->
,
datums izskatīsies šādi:
2015.10.20-09:18
Pilnu atbalstīto datuma formatējamu sarakstu var apskatīties šeit -->.
Ja nepieciešams veidot vairākas lapas, kurām jābūt ieturētām vienotā stilā, var izmantot SSI komandu, kas ļauj ievietot lapā citus failus:
<!--#include virtual="iekļaujamais_fails" -->
Iekļaut var citu SHTML dokumentu, parastu HTML dokumentu, teksta failu, attēlu vai pat CGI programmas izvadītos rezultātus. Izmantojot citu SHTML dokumentu, iespējams definēt mainīgos, ko izmantos iekļaujamais fails, ar komandu
<!--#set var="mainīgais" value="mainīgā_vērtība" -->
.
Savukārt, mainīgā vērtības ievietošanu iekļaujamajā failā, nodrošina komanda
<!--#echo encoding="none" var="mainīgais" -->
SSI atbalsta nosacījuma konstukcijas „ja – tad”:
<!--#if expr="nosacījums" -->
Izpildās, ja patiess nosacījums.
<!--#elif expr="cits nosacījums" -->
Izpildās, ja patiess cits nosacījums.
<!--#else -->
Izpildās, ja neviens no nosacījumiem nav patiess .
<!--#endif -->
Sākot no Apache http servera 2.4-ā versijas tika izmainīta nosacījumu pareizrakstība. Piemēram, lai pārbaudītu, vai dotais mainīgais ir definēts, vecākās versijās pietiek nosacījumā ierakstīt tikai mainīgā vārdu liekot tā priekšā dolāra zīmi:
<!--#if expr="$mainiigais" -->
Sākot no 2.4 versijas mainīgos vairs neapzīmē liekot priekšā dolārzīmi, bet gan liekot figūriekavās, kurām priekša ir procentu zīme (piemēram: %{REDIRECT_STATUS}
).
Tiesa, daļa no sistēmas mainīgo un visu pašdefinēto mainīgo vērtības šādi nav iegūstamas.
Jāizmanto nedokumentēta funkcija 'v()', piemēram v('mainiigais')
.
Lai noteiktu, vai dotajam mainīgam ir vai nav vērtība, izmanto atbilstošus operatorus (-n
vai -z
).
Lai pārbaudītu, vai mainīga ir vērtība, tagad jāraksta:
<!--#if expr="-n v('mainiigais')" -->
Lai salīdzinātu mainīgo ar kādu vērtību, izmanto salīdzināšanas operatorus:
=
==
!=
<
>
<=
>=
Lai veiktu RegEx salīdzinajumus, izmanto divus operatoros:
=~
!~
Vienā izteiksmē var būt vairāki salīdzinājumi, kas savstarpēji tiek savienot ar loģisko 'un' (&&) vai ar loģisko 'vai' (||). Loģisko nosacīju izmantošanu var apskatīties piemērā, kurā tiek veidots faila vārds, balstoties uz dotās dienas datumu.
<!--#set var="virsraksts" value="Šis ir virsraksts" -->
<!--#include virtual="galvina.shtml" -->
..
Tālāk seko pamatfaila saturs
..
<!--#include virtual="aste.shtml" -->
<!--#config timefmt="%Y.%m.%d-%H:%M" -->
<html>
<head>
<title><!--#echo encoding="none" var="virsraksts" --></title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1257">
<meta name="KeyWords" content="SSI,SHTML">
</head>
<body text=#000000 bgcolor=#ECECC0 link=#804040 vlink=#804040 alink=#FF0000>
<H1 ALIGN="center"><!--#echo encoding="none" var="virsraksts" --></H1>
<hr>
<hr> <div align=right> Lappusi « <!--#echo encoding="none" var="DOCUMENT_NAME" --> » veidoja <!--#if expr="-n v('autors')" --> <!--#echo encoding="none" var="autors" --> <!--#else --> <!--#echo encoding="none" var="SERVER_ADMIN" --> <!--#endif --> <br> <!--#if expr="-z v('datums')" --> <!--#echo encoding="none" var="LAST_MODIFIED" --> <!--#else --> <!--#echo encoding="none" var="datums" --> <!--#endif --> </div> </body> </html>
<!--#config timefmt="%d" --> |
Kā laiks tiks rādīts tikai datums (01 – 31). |
<!--#if expr="v('DATE_LOCAL') > '00' && v('DATE_LOCAL') < '06'" --> <!--#set var="diena" value="01" --> <!--#elif expr="v('DATE_LOCAL') > '05' && v('DATE_LOCAL') < '10'" --> <!--#set var="diena" value="06" --> <!--#elif expr="v('DATE_LOCAL') > '09' && v('DATE_LOCAL') < '19'" --> <!--#set var="diena" value="10" --> <!--#elif expr="v('DATE_LOCAL') > '18' && v('DATE_LOCAL') < '28'" --> <!--#set var="diena" value="19" --> <!--#else --> <!--#set var="diena" value="28" --> <!--#endif --> |
Atbilstoši patreizējai datumam, mainīgajam 'diena' tiek piešķirta noteikta vērtība. |
<!--#config timefmt="%m" --> |
Kā laiks tiks rādīts tikai mēnesis (01 – 12). |
<img src=/Atteli/pamati/<!--#echo encoding="none" var="DATE_LOCAL" --><!--#echo encoding="none" var="diena" -->.jpg ALT='<!--#include virtual="/Atteli/pamati/$fails.ttt" -->' TITLE='<!--#include virtual="/Atteli/pamati/$fails.ttt" -->' > |
Izpildoties šiem nosacījumiem, ik pa noteiktam dienu skaitam tiek parādīta cita bilde:
|
Lappusi
«SSI.shtml» veidoja karlo@lanet.lv 2015.10.20-09:18 |
||||||||