Server Side Includes (SSI) of server parsed HTML (SHTML) is server-side scriptingtechniek die ondersteund wordt door sommige webservers. De techniek maakt het mogelijk om de server een aantal zaken automatisch te laten afhandelen die anders met de hand, of met behulp van een programmeertaal (zoals PHP of Perl), uitgevoerd zouden moeten worden. SSI wordt vooral gebruikt om de inhoud van de ene file in een andere op te nemen, op het moment dat die laatste opgevraagd wordt. Het is HTML-code die speciale regels bevat en die door de webserver omgezet worden naar normale HTML-code, voordat deze doorgezonden wordt naar de gebruiker. Dit kan gebruikt worden om bijvoorbeeld meerdere HTML-bestanden naar één HTML-bestand om te vormen. De commandosyntaxissen en -sets verschillen tussen de verscheidene serversystemen.
SSI is vooral geschikt voor eenvoudige taken. Voor complexe taken, zoals authenticatie, verdient het gebruik van een complete programmeertaal zoals PHP de voorkeur. Meestal wordt voor HTML-files die SSI-commando's bevatten de extensie .shtml of .shtm gebruikt, hoewel het ook mogelijk is de server zodanig te configureren dat een zelfgekozen extensie mogelijk is.
SSI-commando's worden opgenomen in HTML-commentaar (zodat deze niet zichtbaar zijn als SSI niet werkt), en hebben de volgende vorm:
<!-- #commando parameter1=waarde1 parameter2=waarde2 -->
Waarbij het "<!-- .. -->"-gedeelte normaal wordt gezien als een commentaar en wordt genegeerd, maar via een SHTML-geactiveerde server gebruikt wordt. Deze commando's worden vervolgens gelezen door de HTTP-server en gebruikt om de HTTP-code te vormen die bij het gebruikte commando hoort. Meestal wordt SHTML-code opgeslagen in een .shtml/.shtm-bestand op de server. Dit is echter geen verplichting: ook de .html-extensie kan gebruikt worden.
Enkele commando's ter voorbeeld:
Met het config-commando kan je extra controle uitvoeren over de fileparsing. Deze gaat met de volgende attributen samen:
de shtml file. Deze fout wordt tevens in een errorlogbestand opgeslagen.
Het maakt gebruikt van hetzelfde formaat als de strftime library call in C.
<!--#config errmsg="Dit is een testbericht!" -->
Via dit commando kan je de inhoud van een ander bestand bijvoegen. Deze gaat met de volgende attributen samen:
<!--#include file="testpagina.html"-->
Als een pagina waarin deze regel is opgenomen opgevraagd wordt, zal de server de bovenstaande regel vervangen door de inhoud van de file testpagina.html.
Dit commando laat de data omvormen naar een speciale of omgevingsvariabele (het var-attribuut wordt telkens hierbij gevoegd).
<!--#echo var="REMOTE_ADDR" --> Met REMOTE_ADDR wordt het IP-adres van de bezoeker van de pagina bedoeld.
Dit commando geeft de grootte van een specifiek bestand weer. Dezelfde attributen als die van include worden hierbij gebruikt.
<!--#fsize file="testbestand.gif"-->
Met dit commando kan je een CGI-programma/script of een shellopdracht opstarten. Dit gaat met de volgende attributen samen:
<!--#exec cgi="/cgi-bin/foo.cgi"-->
Dit commando laat je de datum zien van de laatste wijziging van een bepaald bestand. Dezelfde attributen als het include-command worden hier gebruikt.
<!--#flastmod file="testpagina.html"-->