Dernière mise à jour |
20 mai
1996 |
Auteur |
Gilles
Maire |
Serveur |
http://www.imaginet.fr/ime/ssi.htm |
Adresse |
Gilles.Maire@UNGI.com |
Les SSI (Server Side Include) quand
elles sont supportées par votre serveur sont un bon compromis entre
le langage Javascript et les CGI. En effet s'ils elles sont
supportées par le serveur http, elle seront compatibles avec tous
les navigateurs puisque le code des SSI sera transformé en HTML.
Cependant il se peut que le serveur qui abrite votre page HTML les
accepte, mais que pour des raisons de sécurité votre administrateur
système ne vous autorise pas l'accès à cette option.
La technologie SSI qui n'était pas normalisée jusqu'à présent
est aujourd'hui adoptée par Netscape et Microsoft, qui l'ont
implanté sur leur serveur HTTP.
Les SSI permettent d'exécuter de façon simple des primitives en
temps réél sur le serveur, comme l'affichage de la date, le nombre
de visiteurs ou de faire des tests conditionnels, pour envoyer un
courrier électronique ou d'interroger une base de données pour y
référencer la personne qui vient de vous lire.
Tout cela peut être fait sans aucune programmation de type CGI,
mais par des portions de code incluses n'importe où dans votre page
HTML.
Le format d'un appel SSI est le suivant :
<!--#<balise><variables> ->
Les balises reconnues sont break, config,
echo, email, exec, if, include,
fsize, flastmod, label, goto et
odbc.
Le mot réservé && placé devant une variable permet de
l'évaluer avant d'éxecuter la commande SSI.
La balise break permet de terminer le document HTML à un
point quelconque. Si la balise est rencontrée le document est
considéré comme achevé.
Ceci est pratique pour envoyer une partie de page que sous
certaines conditions de tests conditionnels.
Syntaxe :
<!--#break -->
La balise config est utilisée pour positionner certaines
options de sortie HTML.
- Errmsg positionne le fichier de sortie qui sert à
afficher les messages d'erreur d'analyse des commandes SSI
- Timefmt positionne le format d'affichage de l'heure
- Sizefmt positionne le format d'affichage de la taille
des fichiers.
- Cmdecho met en service ou hors service la sortie
standard lors d'une commande exec
- Cmdprefix est la chaîne de caractères qui sert de
préfixe pour toutes les lignes issues d'une commande par la balise
exec
- Cmdpostfix est la chaîne de caractères qui sert de
posfixe pour toutes les lignes issues d'une commande par la balise
exec
- Onerr sert à positionner l'action qui sera exécutée en
cas d'erreur d'analyse des commande SSI. La valeur en regard du
paramètre onerr peut être l'une des valeurs suivantes :
- goto label provoque un saut vers
label
- print texte provoque l'affichage de la chaîne de
caractères texte. Le texte peut contenir des balises
HTML.
- error provoque l'affichage d'un message d'erreur
- break provoque la fin de la page HTML
- errorbreak provoque la fin de la page HTML et un message
d'erreur
- printbreak texte provoque la fin de la page HTML
et affiche le texte correspondant
La balise echo permet d'insérer certaines données dans
une page HTML. La variable associée est var, qui est
transformée en une chaîne de caractères à l'intérieur du source
HTML à l'endroit de la variable. Syntaxe :
<!--#echo var="DATE_LOCAL" --> est la date du jour
On peut assigner des variables issues de formulaires par la
méthode POST et des variables d'environnement.
Dans le cas où les variables sont issues d'un formulaire il
suffit de donner en regard du mot var=, le nom que vous avez donné
à la variable.
La liste des variables d'environnement peut varier d'un serveur
à un autre mais la liste des variables les plus courantes est la
suivante :
- ACCEPT_LANGUAGE liste des langues comprises par le
client
- AUTH_TYPE méthode d'authentification pour valider le
client distant
- CONTENT_LENGTH la longueur des informations attachées
dans le cas d'une soumission de formulaire
- CONTENT_TYPE type d'information attachée dans le cas
d'une soumission de formulaire
- DATE_GMT la date et l'heure courantes du serveur HTTP à
l'heure GMT (Greenwich Meridian Time)
- DATE_LOCAL la date et l'heure locales du serveur
HTTP
- DOCUMENT_NAME le nom complet du document
- DOCUMENT_URI est le chemin d'accès du document courant
par rapport au répertoire d'accueil du serveur HTTP
- FROM l'adresse e-mail du client
- FORWARDED nom du proxy server qui a rerouté le
client
- GATEWAY_INTERFACE nom et version du CGI utilisé sur le
serveur HTTP
- HTTP_ACCEPT type MIME accepté par le client distant
- HTTP_COOKIE cookies du serveur HTTP
- HTTP_USER_AGENT le nom du logiciel navigateur
client
- LAST_MODIFIED la date et l'heure de la dernière
modification du document HTML courant.
- PATH_INFO le nom du chemin relatif par rapport au
répertoire d'accueil du serveur HTTP
- PATH_TRANSLATED information sur la variable PATH
traduite physiquement (avec information de disque ou d'unité
logique) vers l'URI
- QUERY_STRING la chaîne de caractères de recherche
envoyée par le navigateur
- QUERY_STRING_UNESCAPED c'est la chaîne de caractères non
transformée envoyée par le client, ainsi les caractères blancs
seront encore avec des valeurs de transfert.
- REFERER l'URL du document HTML de provenance du
client.
- REMOTE_ADDR l'adresse IP du client distant
- REMOTE_IDENT le nom distant de l'utilisateur pour
l'authentification selon la recommandation RFC931
- REMOTE_HOST le nom de la station cliente
- REMOTE_USER le nom du client distant
- REQUEST_METHOD méthode par laquelle le document a été
demandé
- SCRIPT_NAME le nom du script qui est exécuté
- SERVER_NAME le nom de la machine sur laquelle fonctionne
le serveur HTTP
- SERVER_PORT le nom du port du serveur HTTP
- SERVER_PROTOCOL le nom et la version du serveur HTTP
servant les pages
- SERVER_SOFTWARE nom du serveur HTTP
La balise email permet d'envoyer un courrier dès qu'une
page est accédée ou qu'un formulaire est envoyé.
Il sera nécessaire de renseigner les variables fromhost,
tohost, fromaddress et toaddress, les autres
étant facultatives.
Regardons chacune des ces variables :
- fromhost définit le nom de l'ordinateur qui émet le
courrier
- tohost définit le nom du serveur SMTP vers le quel le
courrier sera envoyé
- fromaddress définit l'addresse e-mail de
l'expéditeur
- toadress définit l'adresse du recipiendaire
- message définit le corps du message
- subject définit le sujet du message
- sender définit l'adresse de l'émetteur
- replyto définit l'adresse de retour du courrier
- cc définit le champs CC:
- inreplyto définit le champs inreplyto
- id définit un numéro d'identifiant du courrier
La balise exec permet d'exécuter une commande quelconque
par le système d'exploitation du serveur.
Les variables suivantes peuvent être utilisées:
- cmd : cette variable permet de spécifier le nom et les
paramètres de l'exécutable qui sera appelé sur le serveur http. La
sortie des exécutables ainsi appelés sera le document HTML lui
même, comme décrit dans la balise format, cmdecho
- cgi : cette variable permet de spécifier un nom de CGI
relatif au répertoire racine des CGI sur le serveur. La sortie des
CGI ainsi appelés sera le document HTML lui même, comme décrit dans
la balise echo
La balise fsize permet d'insérer la taille du fichier en
paramètre dans la page HTML à la position de la balise SSI. Les
variables suivantes peuvent être ajoutées :
- Virtual : cette variable permet de spécifier un nom de
chemin relatif par rapport au répertoire racine du serveur
http.
- File : cette variable permet de spécifier un nom de
chemin relatif par rapport au répertoire du document HTML
courant.
Syntaxe :
<!--#fsize virtual|File="fichier" -->
Exemple :
<!--#fsize virtual="exemple.sht" -->
La balise flastmodpermet d'insérer la date de dernière
modification d'un fichier dans le document HTML à l'endroit de la
balise SSI. Les variables suivantes peuvent être ajoutées :
- Virtual : cette variable permet de spécifier un nom de
chemin relatif par rapport au répertoire racine du serveur
http.
- File : cette variable permet de spécifier un nom de
chemin relatif par rapport au répertoire du document HTML
courant.
Syntaxe :
<!--#flastmod virtual|File="fichier" -->
Exemple :
<!--#lastmod virtual="exemple.sht" -->
La balise goto permet de sauter vers une étiquette
#label sans exécuter le code entre l'instruction courante et
l'étiquette.
Syntaxe :
<!--#goto ="'etiquette>'"'
Exemple :
<!--#goto ="etiquette" -->
<P> n'est pas imprimé
<,!--#label ="etiquette" -->
<P> est imprimé
La balise if permet d'effectuer une exécution sous
certaines conditions, par exemple, d'afficher une portion de texte
HTML si une condition est remplie. La syntaxe générale de la balise
est la suivante :
<!--#if "operande1" operateur "operande2" operation -->
où
- <operande1> est le premier opérande de la
comparaison.
- <operande2> est le second opérande de la
comparaison
- <operateur> est l'un des symboles : '==',
'!=','<', '>', '!>' ou '!<'.
- <operation>est une action qui est exécutée si la
condition est vrai (goto, print, error etc ..)
Les opérandes peuvent être des chaînes de caractères
(comparaisons basées sur l'ordre alphabétique) ou des nombres
entiers ou flottants (comparaison basée sur la valeur). Si l'un des
opérandes n'est pas un entier la comparaison est alphabétique.
L'opérateur hasstring retourne la valeur vrai si
l'opérande 2 est présent dans l'opérande 1.
La balise include permet d'inclure le contenu d'un
fichier dans la page HTML. Cette balise peut être récursive en SSI
+. Les variables suivantes peuvent être ajoutées :
- Virtual : cette variable permet de spécifier un nom de
chemin relatif par rapport au répertoire racine du serveur
http.
- File : cette variable permet de spécifier un nom de
chemin relatif par rapport au répertoire du document HTML
courant.
Syntaxe :
<!--#include virtual|File="fichier" -->
Exemple :
<!--#include virtual="exemple.sht" -->
La balise label permet de positionner une étiquette de
saut pour un branchement goto
Sytaxe :
<!--#label ="etiquette'" -->
La balise odbc permet de soumettre des requêtes à une
base de données odbc et de mettre à jour cette dernière.
Quatre balises odbc sont définies :
- connect : est utilisé pour connecter une base de données
existante.
Syntaxe :
<!--#connect="base,nom,mot_de_passe" -->
- debug : est utilisé pour afficher des diagnostics
concernant les mécanismes ODBC et SSI. Les messages apparaissent
dans le corps de la page HTML à l'endroit où l'erreur se
produit.
Syntaxe :
<!--#debug chaîne --> ( chaîne est réservé pour un
usage ultérieur)
- format : est utilisé pour fournir un modèle de format
des données retournées par la base de données (c'est l'ordre SQL
SELECT).
Syntaxe :
<!--#format="ordrecprintf" -->
ordrecprintf est le format standard fprintf du langage C.
- statement : est utilisé pour effectuer une requête SQL à
la base de données.
Syntaxe :
<!--#statement="requeteSQL" -->,'
Exemples :
<!--#odbc connect="mabase,gilles,toto" -->
<!--#odbc statement="SELECT NOM, AGE" -->
<!--#obdc format="%s a %s ans<P>" -->
Résultat :
Gilles a 34 ans
Pierre a 32 ans