Introduction au CGI (Common Gateway Interface)
6. Les Server Side Includes
Nous avons vu précédemment les différentes façons d'appeler un CGI :
via son URL, via une balise HTML comme <A HREF="URL">, <IMG SRC="URL"> ou <FORM
ACTION="URL">.
Dans ces conditions, il est donc impossible de faire un CGI qui insère des informations
directement dans une page HTML statique (sauf pour une image).
Les Server Side Includes (SSI) ou Server Parsed HTML apportent cette.
En effet, un SSI fait directement appel à un CGI, au coeur d'une page HTML et
affiche sont résultat à la l'endroit de l'appel. Pour ce faire, on insère des
commandes spécifiques dans des commentaires HTML (<!-- -->) et on renomme la page
HTML avec l'extension .shtml.
Ainsi si l'option est activée sur le serveur, à chaque fois que le serveur
rencontre une page l'extension .shtml, il va analyser son contenu afin de
rechercher et exécuter les éventuelles commandes SSI qui s'y trouvent. Bien sûr, ce mécanisme entraîne
naturellement une légère surcharge de travail pour le serveur.
6.1 Quelques commandes SSI
Afin d'appeler une commande SSI il faut insérer un code du type suivant dans
le corps de votre page HTML à l'endroit ou vous désirez que le résultat s'affiche.
<!--#commande arg1=val1 arg2=val2 ... -->
Les principales commandes reconnues sont :
- config :
- Permet de définir un certain nombre de paramètres relatifs à l'utilisation
des SSI, comme le format date /heure ('timefmt') ou le format taille des
fichiers ('sizefmt') renvoyées par d'autres commandes. L'argument a pour valeur une chaîne de
format entre guillemets ("") pouvant contenir un certain nombre de codes de champs précédés du
caractère "%".
Exemple:
<!--#config timefmt="%d/%m/%y %H:%M:%S"--> définit le format de date tel que :
12/01/97 16:02:43.
- echo :
- Affiche la valeur d'une variables d'environnement spécifiée et
reconnues par les SSI, à savoir : DATE_GMT (date courante GMT),
DATE_LOCAL (date locale), DOCUMENT_NAME (nom du fichier HTML courant),
DOCUMENT_URI (le chemin d'accès au document courant) et LAST_MODIFIED (date de
dernière modification de la page).
Exemple:
<!--#echo var="LAST_MODIFIED"-->
- exec :
- Permet d'exécuter soit un programme CGI (cgi="/cgi-bin/nom_cgi.cgi"),
soit une commande quelconque du système (cmd="commande"), la
sortie étant insérée à l'emplacement où exec a été appelé. Il est a noté qu'en cas
d'exécution d'un CGI, les arguments passé au programmes sont ceux de la page shtml.
Exemple:
<!--#exec cmd="date"--> affiche la date système.
- fsize :
- Renvoie la taille d'un fichier dont le chemin est indiqué via l'argument
file ou virtual (suivant que le chemin est exprimé par rapport au répertoire /
du serveur ou non).
Exemple:
<!--#fsize file="index.html"--> renvoie la taille du fichier index.html du répertoire courant.
- flastmod :
- Indique la date de dernière modification d'un fichier. Cette commande admet les mêmes
arguments que la commande précédente.
Exemple:
<!--#flastmod file="index.html"--> renvoie la date de dernière modification du fichier index.html du répertoire courant.
- include :
- Permet d'insérer le contenu d'un fichier (file="min_fichier") dont on indique le
chemin avec les mêmes arguments que pour les deux dernières commandes. Ou le résultat
de l'exécution d'un programme (virtual="/cgi-bin/nom_cgi.cgi") Il est a noté qu'en cas
d'exécution d'un CGI, les arguments passé au programme sont ceux le la commande.
Exemple:
<!--#include file="index.html"--> affiche le contenu du fichier index.html du répertoire courant.
<!--#include virtuel="/cgi-bin/nom_cgi.cgi?mes_rags"--> affiche le résultat de l'exécution du CGI.
Il existe d'autre commandes, en particulier certaine permettant d'exécuter des conditions,
pour cela il est préférable de consulter la documentation du serveur web.
Exemple :
Cette exemple très simple mais particulièrement utile permet afficher automatique
la date de dernière modification d'un fichier HTML. Bien sur, vous devez enregistrer ce
fichier avec l'extension .shtml .
Dans cet exemple, on définit tout d'abord le format d'affichage des dates dans
le reste du documents, puis on insère la date de dernière modification du fichier
considéré, grâce à la variable d'environnement LAST_MODIFIED.
<HTML>
<HEAD><TITLE>Exemple d'utilisation des SSI</TITLE></HEAD>
<BODY>
...
Date de dernière modification :
<!--#config timefmt="%d/%m/%y %H:%M:%S"-->>
<!--#echo var="LAST_MODIFIED"-->
</BODY>
</HTML>
6.2 Sécurité et SSI
La commande exec ou virtual permet d'exécuter n'importe quelle commande présente sur le serveur.
Il y a donc d'importants risques en matière de sécurité au même titre que
les programmes CGI. C'est pour cela que la plupart des hébergeurs publics désactivent ces options...
|