Servera puse iekļāvumi


Sākumlapa Iepriekšējā lappuse Nākošā lappuse



Kas ir SSI
Ko nevar izdarīt ar SSI
Kā veidot SSI saturošas lapas
Faila labošanas datums
Vienotas lapu daļas
Nosacījumu pārbaude
SSI piemērs

Kas ir SSI

Servera puse iekļāvumi (SSIServer 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:

  1. tīmekļa serverim, kurš uztur SSI. Tāds, piemēram, ir Apache HTTP Server. Tālāk tik apskatīti piemēri, kuri izmantojami jā serverī;
  2. aktivizētam SSI atbalstam. Parasti pēc noklusējuma SSI atbalsts ir atslēgts;
  3. izmantotiem atbilstošie tīmekļa lapu failu vārdu paplašinājumi. Parasti faili, kuros ir SSI komandas, tiek atpazīti pēc failu paplašinājuma, nevis pēc failu satura. Visizplatītākais faila paplašinājums SSI failiem ir '*.shtml'.

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


Saturs Iepriekšējā lappuse Lappas saturs Nākošā lappuse

Ko nevar izdarīt ar SSI

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.


Saturs Iepriekšējā lappuse Lappas saturs Nākošā lappuse

Kā veidot SSI saturošas lapas

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 – &lt; un &gt;.

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 ' -->'


Saturs Iepriekšējā lappuse Lappas saturs Nākošā lappuse

Faila labošanas datums

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 -->.


Saturs Iepriekšējā lappuse Lappas saturs Nākošā lappuse

Vienotas lapu daļas

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" -->


Saturs Iepriekšējā lappuse Lappas saturs Nākošā lappuse

Nosacījumu pārbaude

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.


Saturs Iepriekšējā lappuse Lappas saturs Nākošā lappuse

SSI piemērs

Kopīga lapu galviņas un astes izmantošana

Pamatfaila piemērs:



<!--#set var="virsraksts" value="Šis ir virsraksts" -->
<!--#include virtual="galvina.shtml" -->
..
Tālāk seko pamatfaila saturs
..
<!--#include virtual="aste.shtml" -->

Faila 'galvina.shtml' piemērs:



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

Faila 'aste.shtml' piemērs:


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

Faila nosaukuma izveide no šīsdienas datuma

<!--#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:


Saturs Iepriekšējā lappuse Lappas saturs Nākošā lappuse


priede.bf.lu.lv Bioloģijas fakultāte Datorklase Sākumlapa
Pamatlapa BF Datorklase Sākums
Lappusi
«SSI.shtml»
veidoja
karlo@lanet.lv
2015.10.20-09:18
Lapa ir publicēta ar    CC    BY–SA    3.0 licenci. Ja lapā ir ietvertas daļas uz kurām attiecas cita licence, tas norādīts atsevišķi lapas tekstā.