W czasach, gdy szeroko rozpowszechnione są wszelakie technologie dynamicznego tworzenia stron WWW po stronie serwera, z PHP i ASP na czele, Server Side Includes staje się zapomnianą funkcją. Jednakże technologie, które aktualnie są "na topie" wcale nie muszą być najlepszym rozwiązaniem dla każdego. Wciąż istnieją i zawsze będą istnieć strony, które nie potrzebują do działania całej mocy PHP, a które jednocześnie znakomicie skorzystałyby z możliwości, jakie daje generowanie stron na serwerze. Nie każdy serwer też jest w stanie wytrzymać obciążenie, jakie stanowi PHP.
o autorach
Michał Paluchowski CEO, właściciel i redaktor vortalu NetHut.pl. Jego ulubionym tygodnikiem jest Wprost, a na co dzień z przyjemnością czyta Gazetę Wyborczą. Jest zakochany w muzyce i komputerach, czasem nieco ekscentryczny. Zawsze otwarty na nowe znajomości.
Łącznie napisał dla nas 45 artykułów.tych samych autorów
- IMAP w stylu PHP [MP]
- Własne RSS [MP]
- Rodzina XSL [MP]
- Wprowadzenie do XML [MP]
- Dynamiczne generowanie grafiki w PHP [MP]
zobacz również
W chwilach, kiedy HTML i JavaScript to za mało, a PHP to za dużo, doskonale sprawdzą się właśnie Server Side Includes. Dla samego serwera nie stanowią praktycznie żadnego obciążenia, a webmasterowi dostarczają dodatkowych narzędzi ułatwiających pracę ze stroną WWW.
A co znaczy X?
'X' to znaczek bardzo lubiany w branży komputerowej. Kojarzy się z nowoczesnymi technologiami, science-fiction i stanowi doskonały magnes szczególnie na ludzi młodych, otwartych na takie nowinki. W przypadku XSSI, litera X na początku oznacza 'eXtended', czyli rozszerzoną wersję Server Side Includes, oferowaną przez bądź co bądź najpopularniejsze oprogramowanie serwerów http - Apache.
Nazwa nieco w tym przypadku przerasta samą technologię, ponieważ rozszerzenie standardowych SSI oferowane przez Apache'a nie jest aż tak duże jak możnaby się spodziewać. W zasadzie sprowadza się do jednego elementu, który jednak w odpowiednich rękach potrafi zdziałać cuda:
Instrukcje warunkowe
Nie trzeba tego terminu przedstawiać osobom, które zetknęły się z programowaniem, niezależnie od platformy i języka. Dla niewtajemniczonych pokrótce wyjaśnię. Instrukcje warunkowe działają podobnie jak procesy decyzyjne zachodzące w mózgu człowieka:
jeśli (jestem głodny)
zjem kanapkę
inaczej jeśli (jestem spragniony)
wypiję colę
inaczej
pójdę spać
Całkiem proste. To samo w XSSI wygląda tak:
<!--#if expr="jestem_glodny" -->
zjem kanapke
<!--#elif expr="jestem_spragniony" -->
wypije cole
<!--#else -->
pojde spac
<!--#endif -->
Tak więc zależnie od zaistniałych warunków możemy wyświetlać na stronie różnego rodzaju treści. Zanim zajmiemy się konkretnymi przykładami chwila jeszcze na omówienie sposobu konstruowania warunków. W zasadzie mógłby to być temat kolejnego artykułu, więc przedstawię tylko podstawowe:
<!--#if expr="$zmienna" -->
Powyższy warunek jest spełniony, jeśli $zmienna ma jakąś wartość, ustalona np. w adresie strony:
http://www.strona.pl/index.shtml?zmienna=wartosc
Możemy też porównywać zmienne:
zmienna1 = zmienna2 // 1 równe 2
zmienna1 != zmienna2 // 1 nierówne 2
zmienna1 < zmienna2 // 1 mniejsze od 2
zmienna1 > zmienna2 // 1 większe od 2
zmienna1 >= zmienna2 // 1 większe lub równe 2
zmienna1 <= zmienna2 // 1 mniejsze lub równe 2
Można także łączyć kilka warunków:
<!--#if expr="$a = test1 && $b = test2" -->
<!--#if expr="($a = test1) && ($b = test2)" -->
W powyższym przykładzie (zaczerpniętym z dokumentacji Apache) obie linijki są równoważne (ponieważ operatory '=' warunek '!=' są wyżej w hierarchii niż '&&' i '||', więc są sprawdzane pierwsze), a warunek jest spełniony kiedy zarówno $a jest równe 'test1' jak i $b jest równe 'test2'. Wpisanie tego samego w poniższy sposób:
<!--#if expr="$a = test1 || $b = test2" -->
Spełniałoby warunek gdyby $a było równe 'test1' lub $b było równe 'test2'.
Prosty przykład
Żeby teorię przemienić w praktykę, przedstawię prosty przykład wykorzystania instrukcji warunkowych warunkowych XSSI.
Możemy spowodować, że z biegiem dnia nasza strona będzie się zmieniać. Inna będzie w nocy, inna w dzień a jeszcze inna rano i wieczorem. Będziemy potrzebowali 3 plików CSS, jednego o kolorystyce ciemnej, który nazwiemy noc.css, drugiego o kolorystyce jasnej dzien.css i trzeci o kolorystyce szarej ranoiwieczor.css. Podobnie przyda się obrazek słońca w zenicie, księżyca w pełni i pośredni zawierający słońce i księżyc częściowo za horyzontem.
Kod, który będzie zmieniał wygląd może być taki:
<!--#config timefmt="%H" --><head>
...
<!--#if expr="$DATE_GMT > 22 && $DATE_GMT <= 04" -->
<link rel="StyleSheet" href="noc.css">
<!--#set var="sunmoon" value="moon.gif" -->
<!--#elif expr="$DATE_GMT > 08 && $DATE_GMT <= 18" -->
<link rel="StyleSheet" href="dzien.css">
<!--#set var="sunmoon" value="sun.gif" -->
<!--#elif expr="($DATE_GMT > 04 && $DATE_GMT <= 08) || ($DATE_GMT > 18 && $DATE_GMT <= 22)" -->
<link rel="StyleSheet" href="ranoiwieczor.css">
<!--#set var="sunmoon" value="sunmoon.gif" -->
<!--#endif -->...
<img scr="<!--#echo var="sunmoon" -->">
Proszę bardzo, różne strony na różne pory dnia. A to jedynie prosty przykład. Korzystając z pełnych możliwości XSSI statyczna strona WWW może przy niewielkim nakładzie czasu i środków stać się prawdziwie dynamiczna.
Jak zwykle od wyobraźni webmastera zależy jak wykorzysta narzędzia, które ma do dyspozycji. Planując jednak wszelkie zmiany na stronach WWW nie zapominajmy, że niezależnie od wykorzystanych technologii najważniejsze pozostają czytelność i użyteczność.