 |
Chapitre
27 : Les SSI |
27.1 - Généralités
27.2 - Les commandes
break
config
echo
email
exec
fsize
flastmod
goto
if
include
label
odbc

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
