TUTORIELS 
Les atouts des Server Side Includes
Les commandes SSI permettent une simplification spectaculaire de l'élaboration d'un site, notamment quand il s'agit d'insérer du contenu "à la volée".  (16 mars 2001)
 

La maintenance des pages web, tout autant que l'insertion de contenu "à la volée", deviennent des opérations particulièrement simples en tirant profit des Server Side Includes (SSI). Il s'agit d'un jeu d'instructions du CGI (Common Gateway Interface) qui permettent d'insérer (Includes) dynamiquement du code HTML dans la page web, côté serveur (Server Side), de sorte que la page envoyée à votre navigateur soit entièrement en HTML, à savoir sans instructions SSI qui, elles, n'apparaissent que dans le code de la page correspondante stockée sur le serveur.
Tous les serveurs ne permettent pas l'analyse syntaxique des instructions SSI, aussi la première étape consiste à s'assurer que le serveur qui héberge votre site ne fait pas partie de cette catégorie.

Syntaxe
Les instructions SSI sont insérées lors de la conception de la page web sous forme de commentaires HTML. Ainsi par exemple, on pourra écrire (au sein des balises <BODY> et </BODY>):

<!-- #echo var="DATE_LOCAL" -->

(certains serveurs rendent indispensable la présence d'un espace avant "-->")
Cette commande (#echo) affichera la date et l'heure de l'affichage de la page sur votre navigateur. L'inscription (et non la commande SSI) figurera dans le code de la page (au contraire du fonctionnement d'instructions Javascript par exemple).
Ainsi, la commande:

<!-- #include virtual="boutdepage.html" -->

permettra d'inclure le code entier de boutdepage.html dans le code de la page comportant l'instruction SSI, et ceci de manière transparente puisque le navigateur n'affichera qu'un code "agrégé" pour la page correspondante.
La fichier de la page web qui contient des instructions SSI comporte usuellement l'extension .shtml au lieu de .html, mais certains serveurs permettent à des pages en .html de comporter des instructions SSI. (dans ce cas, il est néanmoins bon de caractériser les pages comportant des instructions SSI, ou, à défaut, de caractériser les pages qui contiendront des portions de code destinées à être incluses par la commande #include).

Principales commandes SSI
Outre #echo, qui permet d'afficher une variable d'environnement CGI et SSI, sur le modèle donné plus haut, et #include, qui permet d'inclure des portions de code HTML - on lui transmet un fichier .htm, .html, .shtml ou .txt (mais pas de scripts CGI) de deux manières: soit en spécifiant un chemin "virtuel" (depuis la racine de votre site) par virtual="nomdefichier", soit en spécifiant le chemin relatif (depuis le répertoire de la page web contenant l'instruction SSI) par file="chemin/du/fichier/nomdefichier") -, les principales autres commandes SSI sont les suivantes:

config permet de configurer les messages d'erreur SSI (#config errmsg="message"), le format de la date et de l'heure (#config timefmt="format") ou le format de la taille d'un fichier (#config sizefmt="format").
fsize écrit la taille d'un fichier transmis par file="..." ou virtual="..."
flastmod écrit la date de dernière modification d'un fichier transmis par file="..." ou virtual="..."
exec permet d'exécuter une commande Unix sur le serveur (exemple: #exec cmd="/bin/date") ou d'exécuter un script CGI (#exec cgi="monscriptcgi.cgi")

Ce tableau appelle deux remarques:

- la première concerne le format de la date, de l'heure et de la taille de fichier: la chaine format est bâtie à l'aide des codes suivants;
- le script CGI transmis à la commande #exec ne doit pas comporter de "?" - ceci n'est pas un problème car un bouton de formulaire renvoyant à une page web contenant l'instruction SSI #exec transmettra au CGI la chaine QUERY_STRING (pourvu que la méthode GET ait été employée), bien qu'une page web ait été la cible première.

Il existe d'autres commandes SSI, mais celles qui précèdent sont susceptibles de vous faire gagner un temps précieux dans l'élaboration et surtout la maintenance de votre site web (des morceaux de code HTML utilisés par toutes les pages peuvent ainsi être modifiés avec l'assurance que la répercussion sera automatiquement effectuée dans toutes les pages qui les incluent). Un exemple concret d'utilisation du SSI est donné par

http://bignosebird.com/sdocs/enable.shtml

 
[ Jérôme MorlonJDNet
 
Accueil | Haut de page