Server Side Includes eli SSI

WEB-OHJELMOINNIN KOULUTUSTA VUONNA 2025!

Kurssit saatavilla kautta Suomen. Tule ja varaa oma koulutustapahtumasi heti! Koulutuksen järjestää asiantuntijasi Koulutus- ja konsultointipalvelu KK Mediat.

SSI-opas: Johdatus Server Side Includesin käyttöön

Kuvittele tilanne, jossa haluat lisätä jokaisen tiedoston loppuun copyright merkinnän tai jonkun muun alatunnistetiedon. Tekisitkö tarvittavan merkinnän kaikkiin tiedostoihin manuaalisesti, jolloin muutoksen yhteydessä joutuisit käymään kaikki tiedostot läpi? Vai tekisitkö vain yhden tiedoston joka sisältää copyright merkinnän ja liittäisit sen SSI-komennon avulla joka sivulle?

SSI eli Server Side Includes on eräs vanhimmista palvelinpuolen ohjelmoinnissa käytettävistä tekniikoista. Sen avulla on erittäin helppoa ja yksinkertaista lisätä sivuille toistuvia koodinpalasia sekä noutaa perustietoja palvelimen toiminnasta. Koska kyseessä on CGI-tekniikan ohella yksi vanhimmista www-ohjelmoinnin käytännöistä, tukevat kaikki palvelimet poikkeuksetta SSI-komentojen käyttämistä.

Oletusarvoisesti SSI-komentoja voi suorittaa tiedostoilla, joiden tiedostopääte on stm, shtm tai shtml. WWW-palvelimen asetuksia muokkaamalla SSI-käskyjen suorittamisen voi liittää mihin tahansa tiedostopäätteeseen, kuten PHP ja ASP-sivuihin.

Käytännössä liittäminen tarkoittaa sitä, että aina kun WWW-palvelin saa määrättyä tiedostopäätettä koskevan pyynnön, siirtää se pyynnön määrittämän tiedoston parsimisen erilliselle sovelluskirjastolle tai moduulille (esim. Apache www-palvelimen kohdalla mod_include). Kyseinen sovelluskirjasto käsittelee tiedostoa ja suorittaa löytämänsä SSI-komennot. Lopputuloksen se palauttaa WWW-palvelimelle www-sivuna, joka palauttaa sivun edelleen asiakkaalle.

Artikkelin alussa mainittu esimerkki kuvasi SSI-komentojen yleisimmän käyttötavan eli tiedoston sisällyttämisen HTML ym. sivulle. SSI on teknologiana kuitenkin huomattavasti monipuolisempi, kuten alla oleva listaus SSI-komennoista paljastaa.

#config
Määrittää asiakkaalle palautettavien virhesanomien, päivämäärien ja tiedostokokotietojen muodon.
#echo
Tulostaa palvelimen ympäristömuuttujan arvon.
#exec
Suorittaa sovelluksen WWW-palvelimella. Mahdolliset sovelluksen tulostamat viestit tulostetaan näytölle.
#flastmod
Tulostaa tiedoston tallennusajankohdan 'sivulle.
#fsize
Tulostaa tiedoston koon sivulle.
#include
Sisällyttää tiedoston osaksi toista tiedostoa.

Yleisenä syntaksina on kirjoittaa SSI-komennot:


<!-- #komento parametrit= "jokin arvo"-->

SSI:n #config-komento

#config-komento määrittää muodon, jota käytetään virhesanomissa, päivämäärissä ja tiedostokoon palauttamisessa. Direktiiviä voi käyttää vain HTML-sivuilla. Syntaksiltaan se on:


<!-- #config parametrit = arvo -->

Mahdollisina parametreinä se voi ottaa tulosteen:

- ERRMSG; Määrittää palautettavan virhesanoman muodon. Oletusarvoisesti SSI palauttaa virhesanoman, jossa kerrotaan yksityiskohtaisesti, missä virhe tapahtui. Jos haluat piilottaa yksityiskohtaiset tiedot, palauta lyhyt ja yksinkertainen virhesanoma, kuten "Tapahtui SSI-virhe."

-TIMEFMT; Määrittää muodon, jossa aika ja päivämäärä palautetaan selaimeen. Mahdolliset arvot palautetaan syntaksilla:

%a: viikonpäivän lyhenne (esimerkiksi ma).
%A; Viikonpäivän täydellinen nimi (esimerkiksi maanantai).
%b; Kuukauden nimen lyhenne (esimerkiksi helmi).
%B; Täydellinen kuukauden nimi (esimerkiksi helmikuu).
%c; Paikallinen esitysmuoto päivämäärälle ja ajalle (esimerkiksi 25.6.1999 12:51:32).
%d; Kuukaudenpäivä kokonaislukuna (01 - 31)
%H; Tunnit 24-tuntisessa muodossa (00 - 23).
%I; Tunnit 12-tuntisessa muodossa (01 - 12).
%j; Vuodenpäivä kokonaislukuna (001 - 366).
%m; Kuukausi kokonaislukuna (01 - 12).
%M; Minuutit kokonaislukuna (00 - 59).
%p; Paikallinen aamu- ja iltapäivätunniste (esimerkiksi PM).
%S; Sekunnit kokonaislukuna (00 - 59).
%U; Vuoden viikko kokonaislukuna (00 - 51).
%w; Viikonpäivä kokonaislukuna (0 - 6).
%W; Vuoden viikko kokonaislukuna (00 - 51).
%x; Paikallinen esitysmuoto päivämäärälle (esimerkiksi 25.6.1999).
%X; Paikallinen esitysmuoto ajalle (esimerkiksi 12:51:32).
%y; Vuosi ilman vuosisataa kokonaislukuna (esimerkiksi 01)
%Y; Vuosi, jossa ilmoitetaan vuosisata, kokonaislukuna (esimerkiksi 2001)
%z, %Z; Aikavyöhykkeen nimi tai lyhenne.
%%; Prosenttimerkki

- SIZEFMT; Tiedoston koko kilotavuina tai tavuina. Kaksi arvoa: "ABBREV"; näyttää arvot kilotavuina, "BYTE" tavuina.

Lopuksi joitain esimerkkejä:


<!-- Virheilmoitus-->
<!-- #config errmsg="SSI:n käsittelyssä tapahtui virhe." -->
<!-- Aika syntaksissa HH:MM:SS(esim. 23:59:59). -->
<!-- #config timefmt="%H:%M:%S" -->
<!-- Päivämäärä syntaksissa MM/DD/YY (esim. 06/28/01). -->
<!-- #config timefmt="%m/%d/%y" -->
<!-- Tiedoston koko tavuissa-->
<!-- #config sizefmt="bytes" -->

SSI:n #Echo komento

#echo-direktiivi määrittää Web-palvelimen lisäämään ympäristömuuttujan arvon HTML-sivulle. Direktiiviä voi käyttää vain HTML-sivuilla. Syntaksina on :


<!-- #echo var = Muuttujanimi -->

Muuttuja voi olla jokin seuraavista:

SSI:n #Exec ja #f-komennot

#exec-komento suorittaa annetun sovelluksen tai käyttöliittymäkomennon. Tuloksen se lähtettää asiakkaan selaimeen. Komentoa voi käyttää vain HTML-sivuilla. Syntaksiltaan se on :


<!-- #exec Komentotyyppi = Komennon kuvaus -->

Komentotyyppi voi olla jompikumpi seuraavista:

CGI ; Suorittaa sovelluksia, kuten CGI-komentosarjan tai ASP- tai ISAPI-sovelluksen. Komennon kuvaus -parametri on merkkijono, joka sisältää sovelluksen suhteellisen polun, jonka jälkeen on kysymysmerkki (?) ja parametrit, jotka on välitetty sovellukselle. Parametrit erotetaan plusmerkillä (+).

Command ; Suorittaa käyttöliittymäkomennon. Komennon kuvaus -parametri on merkkijono, joka sisältää käyttöliittymäohjelman täydellisen fyysisen polun, jonka jälkeen on komentorivin parametrit välein erotettuina.

#flastmod ja #fsize

#flastmod-komento määrittää palvelimen lisäämään ajan, jolloin määritetty tiedosto muokattiin HTML-sivulle. Komentoa voi käyttää vain HTML-sivuilla. Syntaksiltaan se on:


<!-- #flastmod Polkutyyppi = Tiedostonimi --> 

#fsize-komento käskee palvelimen lisäämään määritetyn tiedoston koon sivulle. Komentoa voi käyttää vain HTML-sivuilla. Syntaksiltaan se on:


<!-- #fsize Polkutyyppi = Tiedostonimi --> 

Polkutyyppi voi olla jokin seuraavista:

File;Tiedostonimi on suhteellinen polku kansiosta, jossa #flastmod-direktiivin sisältävä tiedosto sijaitsee, lähtien.

Virtual; Tiedostonimi on täydellinen polku Web-palvelimesi näennäiskansiosta lähtien.

Alla oleva esimerkki palauttaa tiedoston tiedosto.htm koon:


<!-- #fsize file = "tiedosto.htm" --> 

SSI:n #Include komento

#include-komento määrittää palvelimen lisäämään tiedoston sisällön sivulle. Tätä komentoa voi käyttää sekä html että suoritettavilla sivuilla. Syntaksiltaan se on:


<!-- #include Polkutyyppi = Tiedostonimi --< 

Polkutyyppi voi olla jokin seuraavista:

File;Tiedostonimi on suhteellinen polku kansiosta, jossa #flastmod-direktiivin sisältävä tiedosto sijaitsee, lähtien.

Virtual; Tiedostonimi on täydellinen polku Web-palvelimesi näennäiskansiosta lähtien.

Liitetyt tiedostot voivat saada minkä tahansa tiedostotunnisteen. Perinteistä .inc-tunnisteen käyttöä tulee harkita tarkkaan, koska tiedostot ovat puhdasta tekstiä ja ovat jokaisen ladattavissa ja luettavissa. Mikäli liitetyssä tiedostossa olisi esimerkiksi tietokannan salasana ja tunnus, olisi korvaamaton vahinko ehtinyt aiheuta. Tästä syystä kannattaa ennemminkin käyttää .asp, .jsp tai .php päätteitä, jolloin tiedoston katseleminen on huomattavasti vaikeampaa.

Lopuksi joitain esimerkkejä include komennon käytöstä:


<!-- #include file = "navigointi.html" -->
<!-- #include virtual = "/scripts/dbs/dbyhteys.asp" -->