Wstecz | Dalej |
Wstawki takie, umieszczane w pliku HTML, mają postać:
<!--#polecenie parametry -->Z punktu widzenia języka HTML stanowią one zatem komentarz, co zabezpiecza przed ich wyświetleniem na ekranie w sytuacji, gdyby z jakiegoś powodu nie zostały one zinterpretowane przez serwer i wysłane do przeglądarki użytkownika. Podobnie bowiem jak w przypadku samych skryptów CGI, także i możliwość korzystania z SSI może być zablokowana w konfiguracji serwera i wymagać odblokowania przez administratora (są to dwie niezależne opcje w konfiguracji). Ponadto musimy poinformować serwer, które pliki zawierają wstawki - analizowanie każdego pliku HTML wpłynęłoby bardzo źle na wydajność serwera. Stąd też pliki zawierające wstawki SSI opatruje się zwykle innym rozszerzeniem nazwy niż zwykłe pliki HTML - standardowo jest to rozszerzenie .shtml (oczywiście także i to jest zależne od administratora). Każdy plik z takim rozszerzeniem jest przed jego wysłaniem do przeglądarki przeglądany przez serwer i wszystkie wstawki zamieniane są na teksty odpowiednie do użytego polecenia (por. tabela 3). Użytkownik otrzymuje już "czystą" stronę HTML bez żadnych śladów wstawek.
Polecenia dostępne we wstawkach SSI przedstawione zostały w tabeli 3. Spośród nich dwa najistotniejsze stanowią #include i #exec. Polecenie #include pozwala wstawiać w treść strony zawartość innych plików tekstowych - zawierających czysty tekst lub kod HTML (ale nie pełny dokument HTML, z sekcjami <HEAD> i <BODY>, lecz fragment, który z punktu widzenia składni HTML-a może być wstawiony w większą całość). Może ono być bardzo przydatne w sytuacji, gdy np. na naszych stronach WWW powtarzają się pewne stałe elementy - takie jak nagłówki, menu nawigacyjne i inne. Możemy wówczas każdy taki stały fragment umieścić w odrębnym pliku i włączać ten plik poleceniem #include w każdą stronę, która ma go zawierać. Podejście takie bardzo ułatwia zarządzanie dużym serwisem WWW - wystarczy np. zmienić zawartość jednego włączanego pliku, aby automatycznie zmienił się wygląd wszystkich stron w serwisie.
Z uwagi na temat niniejszego poradnika najbardziej interesuje nas włączanie w treść strony fragmentów dynamicznie generowanych przez skrypty CGI. W starszych wersjach serwerów WWW trzeba było używać do tego celu odrębnego polecenia #exec. W większości nowoczesnych serwerów można to robić również poleceniem #include z parametrem virtual=, tak więc polecenie #exec stało się mniej potrzebne.
Spróbujmy zatem zrealizować wypisywanie aktualnego czasu serwera z wykorzystaniem mechanizmu SSI. Tworzymy stronę (pamiętajmy, aby nadać jej rozszerzenie .shtml, lub inne wymagane na naszym serwerze dla plików z wstawkami SSI) o następującej treści:
<html> <head><title>Moja strona</title> <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2"> </head> <body> <h1 align="center">Witam Cię na mojej stronie!</h1> <b>Dzisiaj jest <!--#exec cgi="zegar.cgi" -->.</b><p> .... .... (dalsza część strony) .... </body> </html>oraz skrypt zegar.cgi, będący uproszczoną wersją skryptu z poprzedniego rozdziału:
#!/usr/bin/perl @miesiace = ("stycznia", "lutego", "marca", "kwietnia", "maja", "czerwca", "lipca", "sierpnia", "września", "października", "listopada", "grudnia"); @dni_tyg = ("niedziela", "poniedziałek", "wtorek", "środa", "czwartek", "piątek", "sobota"); print "Content-type: text/plain\n\n"; ($sek,$min,$godz,$dzien,$mies,$rok,$dztyg) = localtime; print "$dni_tyg[$dztyg], $dzien $miesiace[$mies] "; print 1900+$rok,", godzina $godz:$min:$sek";Zwróćmy uwagę, że typ danych dostarczanych przez skrypt został tu zmieniony na text/plain i usunięto informację o standardzie kodowania polskich liter. Nie ma to większego znaczenia, gdyż w przypadku dokumentu włączanego w treść strony przez SSI serwer i tak będzie określał typ danych na podstawie dokumentu nadrzędnego, a nie wstawki. Usunięto też wypisywanie całego kodu HTML strony - pozostała jedynie sama informacja o aktualnym czasie, nadająca się do wstawienia w dowolnym miejscu w treść strony. Skrypt ten uruchomiony z wiersza poleceń systemu operacyjnego wypisałby na swoje standardowe wyjście następujący wynik:
Content/type: text/plain czwartek, 24 sierpnia 2000, godzina 17:03:24natomiast włączony w treść strony przedstawionej powyżej da nam rezultat jak na rys.5.
Wstecz | Dalej |
Powrót do spisu treści | Statystyka |