Rob's web

Server Side Includes

Server Side Includes (SSI) is een techniek die geboden wordt door sommige webservers, zoals Apache. Server Side Includes maken het mogelijk 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.

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.

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" -->

Verdelen van het HTML-document

Willen we SSI gwebruiken dan kunnen we een HTML document in stukken verdelen en die oproepen. Deze techniek leent zich voor sites die enkele menu items hebben en verder voor iedere pagina een vast uiterlijk en inhoud krijgen buiten het artikel om. De inhoud van de SHTML-bestanden is een voorbeeld.

Wanneer index.shtml wordt opgevraagd gaat de webserver dit bestand uitwerken, zodat er een geldig HTML-bestand naar de client wordt gestuurd.

Het index.shtml bestand krijgt de onderstaande inhoud.

<!--#set var="title" value="Titel"-->
<!--#include virtual="/header.shtml"-->

<!--#include virtual="/footer.shtml"-->

Tussen de regel met de header en footer komt de inhoud van het artikel.

De titel van het artikel kan niet op de normale manieer in de head geplaats worden. We doen dit met variabelen.

De volgende regel vertelt de sever dat header.shml gebruikt moet worden. De code hiervan staat onder.

<!--#include virtual="/include/superheader.shtml"-->

<div id="wrapper">
<div id="linkerkolom">

<div id="zijmenu">
<ul>
..................
</ul>
</div><!-- einde zijmenu -->

..................

</div><!-- einde linkerkolom -->

<div id="middenkolom"><!-- einde header, begin pagina -->

In de header wordt weer een stuk code opgevraagd op de eerste regel. De inhoud hiervan staat hieronder.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<title><!--#echo var="title"--></title>
<link rel="stylesheet" href="/include/super.css" type="text/css" media="screen" />
<link rel="stylesheet" href="/include/print.css" type="text/css" media="print" />
<link rel="shortcut icon" href="/include/favicon.ico" type="image/x-icon" />
</head>

<body>
<div id="top">
<h1>Titel site</h1>
</div><!--Einde top -->

Zoals te zien is is er nu geen include meer. Het bestand wordt nu in een tijdelijk locatie geplaats. Als deze include is afgehandeld gaat men in het aanroepend bestand (header.shtml) met de volgende regel verder.

Nadat header.shtml is afgewerkt wordt terug gesprongen naar index.shtml. De inhoud van het artikel wordt nu weergegeven. Hierna gaat de server verder met footer.shtml. De code staat onder.

</div><!--einde middenkolom -->

<div id="rechterkolom">
<!--#include virtual="/rightcol.shtml"-->
</div><!--einde rechterkolom -->

</div><!--einde wrapper -->

<div id="voet" class="clear">
<p>&copy; ..........</p>
</div><!--einde voet -->

</body>
</html>

Als alle onderdelen zijn samen gevoegd wordt de pagina naar de client verstuurd.

Webserver

De pagina die verzonden moet worden als homepage krijgt de naam index.shtml. Wanneer een URL wordt ingetypt, dus zonder bestandsnaam erbij, zal de server een lijst afwerken en de eerste file die op die lijst staat versturen. Dit bestand is meestal index.html.

Om te zorgen dat index.shtml wordt verzonden dient men files met andere extensies op de webserver te verwijderen, zodat de shtml file automatisch wordt verzonden.

Alternatief

Deze methode is erg beperkt en kan beter met PHP gedaan worden. Met PHP is veel meer te doen. Een kleine website ombouwen van shtml naar php is vrij eenvooudig.