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