Une documentation complète en ligne est disponible au NCSA et au CERN
Ceci concerne essentiellement les serveurs du CERN et du NCSA.
L'exécution d'un programme externe par un serveur W3 se fait en deux étapes :
Pour passer des arguments à un programme, on utilise des
formulaires.
La création de formulaires dans un document HTML se fait par l'utilisation de la commande <FORM> dont la syntaxe est :
<FORM ACTION="url" METHODE=[GET | POST]> ... </FORM>
Entre <FORM ...> et </FORM>, on peut définir différents types de champs :
Suivant son type, un champ peut être défini par :
Nous ne parlerons ici que de la méthode POST qui est celle conseillée (cf . section 4.2).
Le plus simple est de commencer par un exemple :
<TITLE>Donnez votre impression</TITLE> <H2>Donnez votre impression sur cette documentation</H2> <FORM METHOD=POST ACTION="http://web.urec.fr/cgi-bin/post-query">> Name: <INPUT NAME="username"> <P> E-Mail: <INPUT NAME="usermail"> <P> <SELECT NAME="feedback"> <OPTION SELECTED>Je l'aime! <OPTION>Je suis perdu! <OPTION>Je la hais! </SELECT><p> <INPUT TYPE=submit VALUE="Envoi"> <P> </FORM>
dont le résultat est le suivant :
Dans cet exemple, on crée un formulaire comportant quatre champs, trois par la commande INPUT, et un par la commande SELECT ayant pour nom ``username'', ``usermail'' et ``feedback'' (le dernier champ n'a pas de nom).
De plus, le champ SELECT comporte trois valeurs ``selectables'' : ``Je l'aime!'',``Je suis perdu!'' et ``Je la hais!''.
L'utilisateur pourra à l'aide de ce formulaire donner une valeur au champs ``username'' et ``usermail'', et sélectionner l'une des trois valeurs possibles de ``feedback''.
Il ne peut y avoir qu'une commande INPUT de type submit dans un formulaire, car c'est par elle que l'utilisateur va pouvoir soumettre la requête.
Le paramètre ACTION permet d'indiquer l'URL qui correspond, en fait, au programme externe qui va traiter la requête.
Le rôle du programme externe est :
W3 utilise CGI (Common Gateway Interface) qui est un standard pour l'écriture de passerelles entres des serveurs d'informations tel que HTTP et des programmes externes.
L'utilisation de CGI permet entre autres possibilités d'utiliser dans un programme les variables d'environnement suivantes :
Si on reprend l'exemple précédent, il s'agit de récupérer les trois valeurs des champs ``username'', ``usermail'' et ``feedback''.
Si vous avez un client W3 supportant les formulaires, vous pouvez essayer ce test. Le programme qu'il appelle se contente de renvoyer les valeurs données dans les champs du formulaire, ainsi que les valeurs des variables ci-dessus.
Les données récupérées par les formulaires sont reçues en entrée par le programme sous la forme d'une chaîne de caractères de la forme :
name1=value1&name2=value2&name3=value3&...&namen=valuen
De plus les caractères spéciaux (caractères accentués, LineFeed...) sont codés. Dans le cas de la méthode GET, cette chaine de caractères est transmise par la variable d'environnement $QUERY_STRINGqui a une longueur de $CONTENT_LENGTHcaractères. Dans le cas de la méthode POST, cette chaîne de caractères est reçue par l'entrée standard.
Pour récupérer les valeurs initiales et les décoder, on peut utiliser des utilitaires fournis en général avec la distribution du serveur (routines en C ou PERL).
Par exemple, la fonction ReadParse fournie dans le package cgi-lib permet de récupérer les paramètres dans un tableau $in. Pour l'exemple précédent, on aurait :
$in{username}=``valeur1'', $in{email}=``valeur2'' et $in{feedback}=``valeur3''.
De façon pratique, pour développer ses propres programmes, on peut partir de programmes existants, la phase initiale de récupération des paramètres étant toujours la même.
Le résultat d'un tel programme peut être du texte ``plat''. Il peut également être un document HTML généré automatiquement en fonction des données fournies par l'utilisateur.
Vous pouvez consulter différents documents existants pour exemple :