Linux - Friheden til egen webserver: Version 2.5.20040516 - 2020-12-31 | ||
---|---|---|
forrige | Kapitel 3. Server-Side Includes | næste |
Det er muligt at anvende logiske udtryk i SSI. Dette minder lidt om #define, #ifdef,#else og #endif i C/C++. Syntaksen i SSI er:
<!--#if expr="betingelse" --> <!--#elif expr="betingelse" --> <!--#else --> <!--#endif -->
Tabel 3-2. Betingelser:
Streng | Er sandt hvis strengen ikke er tom. |
Streng1=Streng2 | Er sand hvis Streng1 og Streng2 er identiske. |
streng=/regularudtryk/ | Er sand hvis regular udtrykket matcher strengen. |
Streng1!=Streng2 | Er sand hvis Streng1 og Streng2 er forskellige |
betingelse1 && betingelse2 | Er sand hvis BÅDE betingelse1 OG betingelse2 er sande, ellers falsk. |
betingelse1 || betingelse2 | Er sand hvis ENTEN betingelse1 ELLER betingelse2 er sande. |
!betingelse | Er sand hvis betingelsen er falsk, og falsk hvis betingelsen er sand. (negation) |
(betingelse) | Er sand hvis betingelsen er sand, ellers falsk. |
Strenge må ikke indeholde whitespace, dvs. mellemrum, tabulartor oa. Skal strenge matches der inderholder whitespace må de skrives med aprostroffer som 'string1' = 'streng2'. Apaches SSI bruger den samme dialekt til regulære udtryk som egrep. For mere information om regulære udtryk se man egrep.
Et eksempel:
<body> <!--#if expr="${HTTP_USER_AGENT} = /Mozilla/" --> Du bruger Netscape! <!--#if expr="${HTTP_USER_AGENT} = /Gecko/" --> Og din browser er bruger Gecko rendering engine! <!--#endif --> <!--#elif expr="${HTTP_USER_AGENT} = /MSIE/" --> Du bruger Explorer. <!--#else --> Din browser kan ikke genkendes. <!--#endif --> </body>
I dette eksempel bruges SSI til at genkende hvilken browser der bruges, og sende specielle HTML-koder til de forskellige browsere. HTTP_USER_AGENT-linjen fortæller hviken browser brugeren anvender.
Tabel 3-3. HTTP_USER_AGENT for nogle typiske browsere
Netscape 4.73 | Mozilla/4.73 [en] (X11; U; Linux 2.2.16-3 i686) |
Galeon | Mozilla/5.0 (X11; U; Linux 2.2.16-3 i686; en-US; Galeon) Gecko/20000807 |
Mozilla M17 | Mozilla/5.0 (X11; U; Linux 2.2.16-3 i686; en-US; m17) Gecko/20000807 |
Lynx | Lynx/2.8.2rel.1 libwww-FM/2.14 |
Slår man HostnameLookups til så modtager man DNS navnet på den server der ønsker data. Det giver en række interessante muligheder f.eks.:
<body> <!--#if expr="${REMOTE_HOST} = /microsoft.com/" --> Desværre - denne side er ikke tilgængelig for Microsoft-ansatte! <!--#else --> Dette er Tux - den mest magtfulde pingvin i verden! <!--#endif --> </body>
Programmet vil returnere én side til alle folk der surfer fra maskiner på Microsofts netværk og én anden side til resten af verden.