Server side includes (SSI) - 9. časť CGI

Určite sa už každý z vás stretol s problémom, keď potrebuje do stránky vložiť určité informácie, ako napr. dátum poslednej modifikácie súboru, CGI premenné, či použiť vo viacerých súboroch ten istý text a podobne.


Máte samozrejme možnosť napísať si pre vloženie požadovaných informácií potrebný skript alebo text, ktorý potrebujete mať vo viacerých súboroch do každého z nich napísať, no je tu ešte jedna možnosť, ako si tieto činnosti uľahčiť - SERVER SIDE INCLUDES (SSI).

SSI sú vlastne direktívy, pomocou ktorých môžete z HTML dokumentu spustiť ľubovoľný program či CGI skript a ich výstup poslať do daného dokumentu, alebo zobraziť určité dáta. Keď klient pristupuje k stránke, ktorá SSI obsahuje, je táto stránka pred zobrazením odovzdaná parseru, ktorý zabezpečí činnosti určené pomocou SSI a až potom je výstup odovzdaný klientovi.

Ako server zistí, že stránka na ktorú sa klient obrátil obsahuje SSI? Server automaticky neanalyzuje všetky súbory, ale len tie, ktoré sú ukončené určitou príponou nastavenou v konfigurácii servra (štandardne to býva .shtml).

SSI má samozrejme aj svoje nevýhody. V prvom rade je to samozrejme záťaž systému vznikajúca analyzovaním súborov pred odoslaním klientovi. Ďalším rizikom je ohrozenie bezpečnosti - pokým užívateľom, ktorých stránky na svojom serveri hosťujete nedôverujete (správnu dávku paranoje by mal mať každý administrátor), môžete sa dostať do veľkých problémov vďaka tomu, že v niektorej zo stránok môže byť direktíva sprístupňujúca citlivé údaje vášho systému.

V nasledujúcej tabuľke sú uvedené SSI direktívy, ktoré máte k dispozícii pre vaše stránky:

echo var Vloží hodnotu premennej prostredia alebo SSI premennej
include Vloží obsah súboru do aktuálneho dokumentu
file Relatívna cesta k súboru vzhľadom k akt. adresáru
virtual Virtuálna cesta k dokumentu na serveri
fsize file Vloží veľkosť zadaného súboru
flastmod file Vloží dátum a čas poslednej modifikácie súboru
exec Spustí program a jeho výstup presmeruje do akt. dokumentu
cmd Spustí ľubovoľnú aplikáciu na lokálnom počítači
cgi Spustí CGI skript
config Nastaví rôzne aspekty SSI
errmsg Zmení defaultnú chybovú správu
sizefmt Určí formát pre veľkosť súboru
timefmt Určí formát pre zobrazenie dátumu a času

Ako tieto direktívy do svojho súboru začleníte? Možno ste sa už niekedy stretli s tagom, ktorý vyzerá ako komentár, ale obsahuje aj znak < !-- Takáto direktíva by do aktuálneho dokumentu vložila obsah súboru adresa.txt, ktroý je umiestnený v tom istom adresári ako náš dokument.

Myslím že vysvetľovať väčšinu z direktív uvedných v tabuľke nie je potrebné, pozastavím sa len pri dvoch: echo a config.

Direktíva echo vloží do dokumentu premennú prostedia (o tých sme si hovorili v prvej časti tohto seriálu) alebo premennú SSI. Príkladom pre vloženie premennej prostredia by mohlo byť napr. vloženie IP adresy, z ktorej je stránka volaná:
< !-- O premenných SSI však zatiaľ reč nebola. Aké sú premenné SSI? Nájdete ich v nasledujúcej tabulke:

DOCUMENT_NAME Názov aktuálneho súboru
DOCUMENT_URI Virtuálna cesta k súboru
QUERY_STRING_UNESCAPED Nekódovaný reťazec dotazu so všetkými metaznakmi shellu
DATE_LOCAL Aktuálny dátum a čas v miestnom časovom pásme
DATE_GMT Aktuálny dátum a čas GMT
LAST_MODIFIED Dátum a čas poslednej modifikácie aktuálneho súboru

Direktíva config vám umožňuje nastaviť si niektoré výstupy SSI.

Môžete si zmeniť napr. štandardné chybové hlásenie, ktoré obdržíte, keď sa pokúsite pomocou SSI vložiť do dokumentu neexistujúci súbor. Toto hlásenie je:
[an error occurred while processing this directive]
Pomocou direktívy config ho môžete zmeniť nasledujúcim spôsobom:
< !--

Rovnako máte možnosť zmeniť zmeniť si formát, v akom je uvádzaná veľkosť súboru. Pomocou reťazca abbrev určíte, že veľkosť súboru sa zaokrúhli na kilobajt hore, pomocou bytes určíte, že veľkosť súboru sa má zobraziť v bajtoch.

Ak si chcete zmeniť formát výpisu dátumu a času, dosiahnete to rvnako pomocou direktívy config. Nasledujúci príklad zobrazí dátum a čas poslednej zmeny aktuálneho súboru podľa našich zvyklostí:
< !-- Posledná zmena dokumentu: < !--
Nasleduje tabulka v ktorej môžete nájsť reťazce pre konfiguráciu formátu dátumu a času:

Formát Hodnota Príklad
%a Deň ktorým začína týždeň Sun
%A Deň v týždni Sunday
%b Mesiac ktorým začína rok Jan
%B Názov mesiaca January
%d Dátum (dd) 03
%D Dátum vo formáte %m/%d/%y 01/01/03
%e Dátum (d) 3
%H 24-hodinový formát času 16
%I 12-hodinový formát času 4
%j Číslo dňa v roku 259
%m Číslo mesiaca (mm) 09
%M Minúty 14
%p AM|PM PM
%r Čas vo formáte %I:%M:%S %p 04:15:22 PM
%S Sekundy 00
%T Čas vo formáte %H:%M:%S 23:12:54
%U Číslo týždňa v roku 16
%w Číslo dňa v týždni 7
%y Číslo roku v storočí 03
%Y Rok 2003
%Z Časové pásmo CEST

Nabudúce sa pozrieme konečne aj na Perl, ukážeme si tvorbu jednoduchého počítadla pre vaše stránky.

Developer,
Stiahnuté z Developer.sk