Server -sida inkluderar - Server Side Includes

Server Side Includes ( SSI ) är ett enkelt tolkat skriptspråk på serversidan som används nästan uteslutande för World Wide Web . Det är mest användbart för att inkludera innehållet i en eller flera filer på en webbsida på en webbserver (se nedan) med hjälp av dess #includedirektiv. Detta kan vanligtvis vara en vanlig kodbit på en webbplats, till exempel sidhuvud, sidfot och navigeringsmeny. SSI innehåller också kontrolldirektiv för villkorliga funktioner och direktiv för att ringa externa program. Det stöds av Apache , LiteSpeed , nginx , IIS samt W3C : s Jigsaw. Det har sina rötter i NCSA HTTPd .

För att en webbserver för att känna igen en SSI-aktiverad HTML -fil och därmed utföra dessa instruktioner, antingen filnamnet ska avslutas med en speciell förlängning som standard .shtml, .stm, .shtmeller, om servern är konfigurerad för att tillåta detta, ställa utförandet bit av filen.

Design

Som ett enkelt programmeringsspråk stöder SSI endast en typ : text. Dess kontrollflöde är ganska enkelt, valet stöds, men slingor stöds inte inbyggt och kan endast göras genom rekursion med inkludera eller använda HTTP -omdirigering . Den enkla utformningen av språket gör det lättare att lära sig och använda än de flesta skriptspråk på serversidan, medan komplicerad bearbetning på serversidan ofta görs med ett av de mer funktionsrika programmeringsspråken . SSI är Turing klar .

SSI har en enkel syntax: <!--#directive parameter=value parameter=value -->. Direktiv placeras i HTML -kommentarer så att om SSI inte är aktiverat kommer användarna inte att se SSI -direktiven på sidan om de inte tittar på dess källa. Observera att syntaxen inte tillåter mellanslag mellan det ledande "<" och direktivet. Apache-handledning om SSI föreskriver att formatet kräver ett mellanslagstecken före "->" som stänger elementet.

Exempel

En webbsida som innehåller en daglig offert kan innehålla citatet genom att placera följande kod i webbsidans fil:

<!--#include virtual="../quote.txt" -->

Med en ändring av quote.txtfilen visar alla sidor som innehåller filen det senaste dagliga citatet. Inkluderingen är inte begränsad till filer, och kan också vara textutmatningen från ett program eller värdet på en systemvariabel, till exempel den aktuella tiden.

Direktiv

Allmänning

Följande är SSI -direktiv från tiden för NCSA HTTPd (1990 -talet). De stöds av alla implementeringar.

NCSA HTTPd SSI -direktiv
Direktiv Parametrar Beskrivning Exempel
include fil eller virtuell Detta är förmodligen det mest använda SSI -direktivet. Det gör att innehållet i ett dokument kan överföras till ett annat. Det medföljande dokumentet kan i sig själv vara en annan SSI-aktiverad fil. Den fileeller virtualparametrar anger filen ( HTML sida, textfil manus, etc.) som ska ingå. NCSA HTTPd stödde inte CGI via include, men senare gör Apache HTTPd. Om processen inte har tillgång till att läsa filen eller köra skriptet misslyckas inkluderingen. Parametern " virtual" hanterar alla katalogvägar som en del av URL: en, medan " file" hanterar alla katalogvägar som i det underliggande filsystemet. När du använder " file" är det förbjudet att referera till absoluta sökvägar eller ../komma åt en förälderkatalog. Apache -dokumentationen rekommenderar att du använder " virtual" framför " file".
<!-#include virtual = "menu.cgi"->
<!-#include file = "footer.html"->
exec cgi eller cmd Detta direktiv kör ett program-, skript- eller skalkommando på servern. Cmd-parametern anger ett kommando på serversidan; cgi -parametern anger sökvägen till ett CGI -skript. Det nuvarande SSI -skriptet PATH_INFOoch QUERY_STRINGdet nuvarande SSI -skriptet överförs till CGI -skriptet. Som ett resultat bör "exec cgi" användas istället för "inkludera virtuellt".
<!-#exec cgi = "/cgi-bin/foo.cgi"->
<!-#exec cmd = "ls -l"->
echo var Detta direktiv visar innehållet i en angiven HTTP -miljövariabel . Variabler inkluderar HTTP_USER_AGENT, LAST_MODIFIEDoch HTTP_ACCEPT.
Din IP -adress är:
<!-#echo var = "REMOTE_ADDR"->
config timefmt, sizefmt eller errmsg Detta direktiv konfigurerar visningsformaten för datum, tid, filstorlek och felmeddelande (returneras när ett SSI -kommando misslyckas).
<!-#config timefmt = " %y %m %d"->
<!-#config sizefmt = "bytes"->
<!-#config errmsg = "SSI-kommandot misslyckades!" ->
flastmod och fsize fil eller virtuell Dessa direktiv visar datumet då det angivna dokumentet senast ändrades eller det angivna dokumentets storlek. Filen eller de virtuella parametrarna anger dokumentet som ska användas. Filparametern definierar dokumentet i förhållande till dokumentvägen; den virtuella parametern definierar dokumentet i förhållande till dokumentroten.
<!-#flastmod virtual = "index.html"->
<!-#fsize file = "script.pl"->

Kontrolldirektiv

Kontrolldirektiv läggs senare till SSI. De inkluderar den allestädes närvarande flödeskontrollen if-elif-else-endif och variabelskrivning samt mer exotiska funktioner som slingor som bara finns i vissa implementeringar.

Direktiv Parametrar Beskrivning Exempel Hittades i
expr Den if . Används för tillståndstester som kan avgöra och generera flera logiska sidor från en enda fysisk sida. elifär en stenografi för nästlat annat-if. elseoch endifaccepterar inte parametrar.

Uttryckssyntax varierar mellan implementeringar. Variabel existens och jämlikhet/regex -kontroller stöds vanligtvis. Jigsaw använder uttryck som delas över flera attribut istället.

<!-#if expr = "$ {Sec_Nav}"->
<!-#include virtual = "secondary_nav.txt"->
<!-#elif expr = "$ {Pri_Nav}"->
<!-#include virtual = "primary_nav.txt"->
<!-#annat->
<!-#include virtual = "article.txt"->
<!-#endif->
Allmänt förekommande.
uppsättning var, värde Ställer in värdet för en SSI -variabel. Apache tillhandahåller ytterligare parametrar för kodningar .
<!-#set var = "foo" value = "bar"->
Apache, Nginx
printenv   Detta direktiv ger en lista över alla SSI-variabler och deras värden, inklusive miljö- och användardefinierade variabler. Det har inga attribut.
<!-#printenv->
Apache

Se även

Anteckningar

Referenser

externa länkar