1 <?xml version=
"1.0" encoding=
"ISO-8859-1" ?>
2 <!DOCTYPE manualpage SYSTEM
"../style/manualpage.dtd">
3 <?xml-stylesheet type=
"text/xsl" href=
"../style/manual.fr.xsl"?>
4 <!-- English Revision : 705116 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
7 <!-- $LastChangedRevision: 2008051801 $ -->
10 Licensed to the Apache Software Foundation (ASF) under one or more
11 contributor license agreements. See the NOTICE file distributed with
12 this work for additional information regarding copyright ownership.
13 The ASF licenses this file to You under the Apache License, Version 2.0
14 (the "License"); you may not use this file except in compliance with
15 the License. You may obtain a copy of the License at
17 http://www.apache.org/licenses/LICENSE-2.0
19 Unless required by applicable law or agreed to in writing, software
20 distributed under the License is distributed on an "AS IS" BASIS,
21 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 See the License for the specific language governing permissions and
23 limitations under the License.
26 <manualpage metafile=
"cgi.xml.meta">
27 <parentdocument href=
"./">Recettes et tutoriels
</parentdocument>
29 <title>Tutoriel Apache : Contenu dynamique bas
é sur CGI
</title>
32 <title>Introduction
</title>
36 <module>mod_alias
</module>
37 <module>mod_cgi
</module>
41 <directive module=
"mod_mime">AddHandler
</directive>
42 <directive module=
"core">Options
</directive>
43 <directive module=
"mod_alias">ScriptAlias
</directive>
47 <p>CGI (Common Gateway Interface) d
éfinit une m
éthode d'interaction
48 entre un serveur web et des programmes g
én
érateurs de contenu
49 externes, plus souvent appel
és programmes CGI ou scripts CGI. Il
50 s'agit de la m
éthode la plus simple, et la plus
51 courante, pour ajouter du contenu dynamique
à votre site web. Ce
52 document est une introduction
à la configuration de CGI sur votre
53 serveur web Apache, et une initiation
à l'
écriture de programmes
57 <section id=
"configuring">
58 <title>Configurer Apache pour autoriser CGI
</title>
60 <p>Apache doit
être configur
é pour permettre l'ex
écution des
61 programmes CGI, pour que vos programmes CGI puissent fonctionner
62 correctement. Il existe plusieurs m
éthodes pour y parvenir.
</p>
64 <note type=
"warning">Note: si Apache a
ét
é compil
é avec le support
65 des modules partag
és (DSO), vous devez vous assurer que le module CGI est
66 charg
é ; vous devez pour cela v
érifier que la directive
<directive
67 module=
"mod_so">LoadModule
</directive> correspondante n'a pas
ét
é
68 comment
ée dans votre
<code>httpd.conf
</code>. Une directive correcte
69 doit ressembler
à ceci :
72 LoadModule cgi_module modules/mod_cgi.so
75 <section id=
"scriptalias">
76 <title>ScriptAlias
</title>
78 <p>La directive
<directive
79 module=
"mod_alias">ScriptAlias
</directive> indique
à Apache qu'un
80 r
épertoire particulier est d
édi
é aux programmes CGI. Apache
81 consid
érera que tout fichier situ
é dans ce r
épertoire est un
82 programme CGI, et tentera de l'ex
écuter lorsque cette ressource
83 fera l'objet d'une requ
ête client.
</p>
85 <p>La directive
<directive
86 module=
"mod_alias">ScriptAlias
</directive> se pr
ésente comme suit
90 ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
93 <p>Cet exemple est tir
é de votre fichier de configuration
94 <code>httpd.conf
</code> par d
éfaut, si vous avez install
é Apache
95 dans son r
épertoire par d
éfaut. La directive
<directive
96 module=
"mod_alias">ScriptAlias
</directive> est similaire
à la
97 directive
<directive module=
"mod_alias">Alias
</directive>, qui
98 d
éfinit
à quel r
épertoire particulier doit correspondre un pr
éfixe
99 d'URL.
<directive>Alias
</directive> et
100 <directive>ScriptAlias
</directive> sont g
én
éralement utilis
és pour
101 acc
éder
à des r
épertoires situ
és en dehors du r
épertoire d
éfini
102 par la directive
<directive
103 module=
"core">DocumentRoot
</directive>. La diff
érence entre
104 <directive>Alias
</directive> et
<directive>ScriptAlias
</directive>
105 r
éside dans le fait que
<directive>ScriptAlias
</directive> indique
106 en plus que tout ce qui se trouve sous le pr
éfixe d'URL doit
être
107 consid
ér
é comme un programme CGI. Ainsi, l'exemple ci-dessus
108 indique
à Apache que toute requ
ête pour une ressource commen
çant
109 par
<code>/cgi-bin/
</code> doit
être servie depuis le r
épertoire
110 <code>/usr/local/apache2/cgi-bin/
</code>, et doit
être trait
ée en
111 tant que programme CGI.
</p>
113 <p>Par exemple, si une requ
ête pour l'URL
114 <code>http://www.example.com/cgi-bin/test.pl
</code> est
115 effectu
ée, Apache tentera d'ex
écuter le fichier
116 <code>/usr/local/apache2/cgi-bin/test.pl
</code> et en renverra la
117 sortie. Bien entendu, le fichier doit exister,
être ex
écutable, et
118 retourner sa sortie d'une mani
ère particuli
ère, sinon Apache
119 renverra un message d'erreur.
</p>
122 <section id=
"nonscriptalias">
123 <title>CGI en dehors des r
épertoires ScripAlias
</title>
125 <p>Pour des raisons de s
écurit
é, la localisation des programmes
126 CGI est souvent restreinte aux
127 r
épertoires d
éfinis par
<directive module=
"mod_alias"
128 >ScriptAlias
</directive>. De cette mani
ère, les administrateurs
129 peuvent contr
ôler pr
écis
ément qui est autoris
é à utiliser les
130 programmes CGI. Cependant, si les pr
écautions ad
équates quant
à
131 la s
écurit
é sont prises, il n'y a aucune raison pour que les
132 programmes CGI ne puissent pas
être ex
écut
és depuis d'autres
133 r
épertoires. Par exemple, vous pouvez autoriser les utilisateurs
à
134 enregistrer des contenus web dans leurs r
épertoires home
à l'aide
135 de la directive
<directive
136 module=
"mod_userdir">UserDir
</directive>. S'ils veulent mettre en
137 oeuvre leurs propres programmes CGI, mais n'ont pas l'autorisation
138 d'acc
ès au r
épertoire
<code>cgi-bin
</code> principal, ils devront
139 être en mesure d'ex
écuter ces programmes depuis un autre
140 r
épertoire.
</p>
142 <p>L'autorisation d'ex
écution des programmes CGI dans un
143 r
épertoire arbitraire se fait en deux
étapes. En premier lieu, le
144 gestionnaire
<code>cgi-script
</code> doit
être activ
é à l'aide
145 d'une directive
<directive
146 module=
"mod_mime">AddHandler
</directive> ou
<directive
147 module=
"core">SetHandler
</directive>. En second lieu,
148 <code>ExecCGI
</code> doit
être sp
écifi
é dans la directive
<directive
149 module=
"core">Options
</directive>.
</p>
152 <section id=
"options">
153 <title>Utilisation d'options explicites pour permettre l'ex
écution
154 des programmes CGI
</title>
156 <p>Vous pouvez utiliser de mani
ère explicite la directive
157 <directive module=
"core">Options
</directive> dans le fichier de
158 configuration de votre serveur principal, pour indiquer que
159 l'ex
écution des programmes CGI est permise depuis un r
épertoire
163 <Directory /usr/local/apache2/htdocs/un-repertoire
><br />
165 Options +ExecCGI
<br />
170 <p>La directive ci-dessus indique
à Apache qu'il doit permettre
171 l'ex
écution des fichiers CGI. Vous devez aussi indiquer au serveur
172 quels fichiers sont des fichiers CGI. La directive
<directive
173 module=
"mod_mime">AddHandler
</directive> suivante indique au
174 serveur qu'il doit traiter tous les fichiers poss
édant une
175 extension
<code>cgi
</code> ou
<code>pl
</code> en tant que
179 AddHandler cgi-script .cgi .pl
183 <section id=
"htaccess">
184 <title>Fichiers .htaccess
</title>
186 <p>Le
<a href=
"htaccess.html"><code>tutoriel
187 .htaccess
</code></a> montre comment activer les programmes
188 CGI si vous n'avez pas acc
ès au
189 fichier
<code>httpd.conf
</code>.
</p>
192 <section id=
"userdir">
193 <title>R
épertoires utilisateurs
</title>
195 <p>Pour permettre l'ex
écution en tant que programme CGI de tout
196 fichier poss
édant l'extension
<code>.cgi
</code> et situ
é dans un
197 r
épertoire utilisateur, vous pouvez utiliser la configuration
201 <Directory /home/*/public_html
><br/>
203 Options +ExecCGI
<br/>
204 AddHandler cgi-script .cgi
<br/>
209 <p>Pour indiquer un sous-r
épertoire
<code>cgi-bin
</code> d'un
210 r
épertoire utilisateur o
ù tout fichier sera trait
é en tant que
211 programme CGI, vous pouvez utiliser ceci :
</p>
214 <Directory /home/*/public_html/cgi-bin
><br/>
217 SetHandler cgi-script
<br/>
226 <section id=
"writing">
227 <title>Ecrire un programme CGI
</title>
229 <p>Il y a deux diff
érences principales entre la programmation
230 "standard" et la programmation CGI.
</p>
232 <p>En premier lieu, toute sortie de votre programme CGI doit
être
233 pr
éc
éd
ée d'un en-t
ête
<glossary>MIME-type
</glossary>. Il s'agit d'un
234 en-t
ête HTTP qui indique au client quel type de contenu il re
çoit.
235 La plupart du temps, il se pr
ésente comme suit :
</p>
238 Content-type: text/html
241 <p>En second lieu, votre sortie doit
être en HTML, ou tout autre
242 format qu'un navigateur est en mesure d'afficher. La plupart du
243 temps, il s'agira de HTML, mais occasionnellement, vous pouvez
être
244 amen
é à écrire un programme CGI qui renvoie une image gif, ou un
245 autre type de contenu non-HTML.
</p>
247 <p>A part ces deux diff
érences, un programme CGI ressemblera
à tout
248 autre programme que vous pourriez
être amen
é à écrire.
</p>
250 <section id=
"firstcgi">
251 <title>Votre premier programme CGI
</title>
253 <p>L'exemple suivant est un exemple de programme CGI qui permet
254 d'afficher une ligne de caract
ères dans votre navigateur. Ecrivez
255 ce qui suit, enregistrez le dans un fichier nomm
é
256 <code>premier.pl
</code>, et placez le dans votre r
épertoire
257 <code>cgi-bin
</code>.
</p>
260 #!/usr/bin/perl
<br />
261 print
"Content-type: text/html\n\n";
<br />
262 print
"Bonjour tout le monde . . .";
265 <p>M
ême si Perl ne vous est pas familier, vous devriez
être
266 capable de comprendre le fonctionnement de ce programme. La
267 premi
ère ligne indique
à Apache (ou
à toute interface
à partir de
268 laquelle le programme s'ex
écute) que ce programme peut
être
269 ex
écut
é en fournissant son fichier
à l'interpr
éteur
270 <code>/usr/bin/perl
</code>. La seconde ligne affiche la
271 d
éclaration du type de contenu consid
ér
é, suivie de deux paires
272 "Retour chariot - Nouvelle ligne". Ceci a pour effet d'ins
érer une
273 ligne vide apr
ès l'en-t
ête pour marquer la fin des en-t
êtes HTTP,
274 et le d
ébut du corps du document. La troisi
ème ligne affiche la
275 cha
îne de caract
ères
"Bonjour tout le monde . . .". Et c'est tout
276 ce dont vous avez besoin.
</p>
278 <p>Si vous ouvrez votre navigateur favori et lui indiquez
282 http://www.exemple.com/cgi-bin/premier.pl
285 <p>ou toute autre URL correspondant
à votre programme CGI, Vous
286 verrez la ligne
<code>Bonjour tout le monde . . .
</code>
287 s'afficher dans la fen
être de votre navigateur. Ce n'est pas
288 extraordinaire, mais si vous y
êtes parvenu, vous avez de bonnes
289 chances d'y parvenir pour tout autre programme plus
290 sophistiqu
é.
</p>
294 <section id=
"troubleshoot">
295 <title>Mais
ça ne marche toujours pas !
</title>
297 <p>Vous devriez voir au moins une des quatre sorties suivantes dans
298 votre navigateur lorsque vous essayez d'acc
éder
à votre programme
299 CGI depuis le web :
</p>
302 <dt>Le flux de sortie de votre programme CGI
</dt>
303 <dd>Impeccable ! Cela signifie que tout fonctionne correctement.
304 Si la sortie est correcte mais n'est pas trait
ée correctement par
305 le navigateur, assurez-vous d'avoir d
éfini
306 <code>Content-Type
</code> de mani
ère appropri
ée dans votre
309 <dt>Le code source de votre programme CGI ou un message
"POST
310 Method Not Allowed"</dt>
311 <dd>Cela signifie que vous n'avez pas configur
é Apache de mani
ère
312 à ce qu'il puisse traiter votre programme CGI. Relisez la section
313 sur la
<a href=
"#configuring">configuration d'Apache
</a>, et
314 essayez de trouver votre erreur.
</dd>
316 <dt>Un message commen
çant par
"Forbidden"</dt>
317 <dd>Ce type de message est r
év
élateur d'un probl
ème de
318 droits. Consultez le
<a href=
"#errorlogs">journal des erreurs
319 d'Apache
</a> et la section ci-dessous sur les
<a
320 href=
"#permissions">droits des fichiers
</a>.
</dd>
322 <dt>Un message contenant
"Internal Server Error"</dt>
323 <dd>Si vous consultez le
<a href=
"#errorlogs">journal des erreurs
324 d'Apache
</a>, vous y trouverez probablement des messages du type
325 "Premature end of script headers" (Fin pr
ématur
ée des en-t
êtes de
326 script),
éventuellement accompagn
és d'un message d'erreur g
én
ér
é
327 par votre programme CGI. Dans ce cas, il va vous falloir lire
328 chacune des sections ci-dessous pour d
éterminer ce qui emp
êche
329 votre programme CGI de g
én
érer les en-t
êtes appropri
és.
</dd>
332 <section id=
"permissions">
333 <title>Droits des fichiers
</title>
335 <p>Souvenez-vous que le serveur ne s'ex
écute pas sous votre nom.
336 En d'autres termes, lorsque le serveur a d
émarr
é, il s'ex
écute
337 avec les droits d'un utilisateur non privil
égi
é - en g
én
éral
338 <code>nobody
</code>, ou
<code>www
</code> - et en cons
équence, il
339 aura besoin de droits suppl
émentaires pour pouvoir ex
écuter des
340 fichiers dont vous
êtes le propri
étaire. En g
én
éral, pour qu'un
341 fichier ait des droits suffisants pour
être ex
écutable par
342 <code>nobody
</code>, il suffit de lui attribuer des droits
343 d'ex
écution pour tout le monde :
</p>
349 <p>En outre, si votre programme doit pouvoir acc
éder en lecture
350 et/ou
écriture
à d'autres fichiers, ces derniers devront avoir les
351 droits appropri
és.
</p>
355 <section id=
"pathinformation">
356 <title>Chemin des ex
écutables (PATH) et variables
357 d'environnement
</title>
359 <p>Lorsque vous lancez un programme depuis la ligne de commande,
360 certaines informations sont pass
ées au shell sans que vous vous en
361 doutiez. Par exemple, la variable
<code>PATH
</code> indique au
362 shell o
ù il doit rechercher les ex
écutables auxquels vous faites
363 r
éf
érence.
</p>
365 <p>Lorsqu'un programme s'ex
écute depuis le serveur web en tant que
366 programme CGI, sa variable
<code>PATH
</code> n'aura peut-
être pas
367 la m
ême valeur. Tout programme que vous invoquez dans votre
368 programme CGI ( comme par exemple
<code>sendmail
</code>) devra
369 être sp
écifi
é par son chemin complet, de fa
çon
à ce que le shell
370 puisse le trouver lorsqu'il tentera d'ex
écuter votre programme
373 <p>Un exemple typique de sp
écification de programme est le chemin
374 vers l'interpr
éteur de script (souvent
<code>perl
</code>) que l'on
375 trouve
à la premi
ère ligne de votre programme CGI et qui va
376 ressembler
à ceci :
</p>
382 <p>Assurez-vous qu'il s'agit bien du chemin correct vers
383 l'interpr
éteur.
</p>
385 <p>De plus, si votre programme CGI d
épend d'autres
<a
386 href=
"#env">variables d'environnement
</a>, vous devrez vous
387 assurer qu'elles lui sont bien transmises par Apache.
</p>
391 <section id=
"syntaxerrors">
392 <title>Erreurs inh
érentes au programme
</title>
394 <p>La plupart des
échecs dans l'ex
écution d'un programme CGI
395 proviennent du programme lui-m
ême. Ceci est particuli
èrement vrai
396 lorsque ce satan
é programme CGI se bloque, alors que vous avez
397 appris
à ne plus commettre les deux erreurs pr
éc
édentes. La
398 premi
ère chose
à faire est de vous assurer que votre programme
399 s'ex
écute depuis la ligne de commande, avant de le tester
à partir
400 du serveur web. Par exemple, essayez :
</p>
403 cd /usr/local/apache2/cgi-bin
<br/>
407 <p>(N'invoquez pas l'interpr
éteur
<code>perl
</code>. Le shell et
408 Apache doivent
être capable de le d
éterminer
à partir de
<a
409 href=
"#pathinformation">l'information sur le chemin
</a> situ
ée sur
410 la premi
ère ligne du script.)
</p>
412 <p>La premi
ère chose que vous devriez voir affich
ée par votre
413 programme est un ensemble d'en-t
êtes HTTP, comprenant entre autres
414 le
<code>Content-Type
</code>, et suivi d'une ligne vide. Si vous
415 voyez quoi que ce soit d'autre, Apache renverra l'erreur
416 <code>Premature end of script headers
</code> si vous tentez
417 d'ex
écuter le programme depuis le serveur. Voir
<a
418 href=
"#writing">Ecriture d'un programme CGI
</a> ci-dessus pour
419 plus de d
étails.
</p>
422 <section id=
"errorlogs">
423 <title>Journalisation des erreurs
</title>
425 <p>Les journaux d'erreurs sont vos amis. Toute anomalie de
426 fonctionnement est consign
ée dans le journal des erreurs et c'est
427 ici que vous devez regarder en premier en cas de probl
ème. Si
428 l'h
ébergeur de votre site ne vous donne pas acc
ès au journal des
429 erreurs, vous avez tout int
ér
êt
à vous tourner vers quelqu'un
430 d'autre. Apprenez
à d
échiffrer les journaux d'erreurs, et vous
431 vous apercevrez que la plupart des probl
èmes seront rapidement
432 identifi
és . . . et r
ésolus.
</p>
435 <section id=
"suexec">
436 <title>Suexec
</title>
438 <p>Le programme
<a href=
"../suexec.html">suexec
</a> permet
439 d'ex
écuter les programmes CGI avec des droits diff
érents selon le
440 serveur virtuel ou le r
épertoire utilisateur dans lequel ils
441 se situent. Suexec effectue une v
érification des droits tr
ès
442 stricte, et toute anomalie d
étect
ée au cours de cette v
érification
443 entra
înera un echec d'ex
écution de votre programme CGI avec
444 affichage de l'erreur
<code>Premature end of script
447 <p>Pour savoir si vous pouvez utiliser suexec, tapez la commande
448 <code>apachectl -V
</code>, et regardez le chemin indiqu
é par
449 <code>SUEXEC_BIN
</code>. Si au d
émarrage d'Apache, ce dernier
450 trouve un ex
écutable
<program>suexec
</program> dans ce chemin,
451 suexec sera activ
é.
</p>
453 <p>Si vous ne ma
îtrisez pas le fonctionnement de suexec, il vous
454 est d
éconseill
é de l'utiliser. Pour d
ésactiver suexec, supprimer
455 simplement (ou renommez) l'ex
écutable
<program>suexec
</program>
456 point
é par
<code>SUEXEC_BIN
</code> et red
émarrez le serveur. Si
457 apr
ès une lecture de
<a href=
"../suexec.html">suexec
</a>, vous
458 d
écidez quand-m
ême de l'utiliser, tapez la commande
<code>suexec
459 -V
</code> pour voir o
ù se situe le journal de suexec, et utilisez
460 ce dernier pour d
éterminer quelles r
ègles vous violez
461 éventuellement.
</p>
465 <section id=
"behindscenes">
466 <title>Que se passe-t-il en coulisse
</title>
468 <p>Lorsque vos comp
étences en programmation CGI seront plus
469 pouss
ées, il s'av
érera int
éressant pour vous de mieux comprendre ce
470 qui se passe en coulisse, et en particulier la mani
ère dont le
471 navigateur et le serveur dialoguent entre eux. En effet, bien qu'il
472 soit tout
à fait louable d'
écrire un programme qui affiche
"Bonjour
473 tout le monde . . .", cela ne sert pas
à grand chose.
</p>
476 <title>Variables d'environnement
</title>
478 <p>Les variables d'environnement sont des valeurs qui gravitent
479 autour de vous lorsque vous utilisez votre ordinateur. Elles sont
480 tr
ès utiles,
à l'instar de votre chemin par d
éfaut (o
ù votre
481 ordinateur va rechercher le fichier physique correspondant
à la
482 commande que vous avez tap
ée), votre nom d'utilisateur, le type de
483 votre terminal, etc... Pour obtenir une liste compl
ète des
484 variables d'environnement standards que vous utilisez tous les
485 jours, tapez
<code>env
</code> dans votre interpr
éteur
488 <p>Au cours de la transaction CGI, le serveur et le navigateur
489 d
éfinissent aussi des variables d'environnement, de fa
çon
à ce
490 qu'ils puissent communiquer entre eux. Ces variables d
éfinissent
491 entre autre le type de navigateur (Netscape, IE, Lynx), le type de
492 serveur (Apache, IIS, WebSite), le nom du programme CGI en cours
493 d'ex
écution, etc...
</p>
495 <p>Ces variables sont
à la disposition du programmeur CGI, et
496 elles constituent
50% de la communication client-serveur. La liste
497 compl
ète des variables requises se trouve
à
498 <a href=
"http://hoohoo.ncsa.uiuc.edu/cgi/env.html"
499 >http://hoohoo.ncsa.uiuc.edu/cgi/env.html
</a>.
</p>
501 <p>Ce programme CGI basique en Perl permet d'afficher toutes les
502 variables d'environnement qui sont
échang
ées. Deux programmes
503 similaires sont fournis avec la distribution d'Apache et situ
és
504 dans le r
épertoire
<code>cgi-bin
</code>.
505 Notez que certaines variables sont
506 obligatoires, alors que d'autres sont optionnelles, si bien que
507 vous verrez s'afficher certaines variables qui ne font pas partie
508 de la liste officielle. De plus, Apache vous propose de nombreuses
509 m
éthodes pour
<a href=
"../env.html">ajouter vos propres
510 variables d'environnement
</a> aux variables de base fournies par
514 #!/usr/bin/perl
<br />
515 print
"Content-type: text/html\n\n";
<br />
516 foreach $key (keys %ENV) {
<br />
518 print
"$key --> $ENV{$key}<br>";
<br />
525 <title>STDIN et STDOUT
</title>
527 <p>L'entr
ée standard (
<code>STDIN
</code>) et la sortie standard
528 (
<code>STDOUT
</code>) constituent d'autres voies de communication
529 entre le client et le serveur. Dans un contexte normal,
530 <code>STDIN
</code> correspond au clavier, ou
à un fichier fourni
531 au programme
à des fins de traitement, et
<code>STDOUT
</code> à la
532 console ou
à l'
écran.
</p>
534 <p>Lorsque vous transmettez un formulaire web
à un programme CGI
535 par la m
éthode
<code>POST
</code>, les donn
ées de ce formulaire
536 sont transcrites dans un format sp
écial et transmises
à votre
537 programme CGI via
<code>STDIN
</code>. Le programme peut alors les
538 traiter comme si elles provenaient du clavier ou d'un
541 <p>Ce
"format spécial" est tr
ès simple. Un nom de champ et sa
542 valeur sont reli
és entre eux par un signe
"égal" (=), et chacune
543 de ces paires nom champ/valeur est s
épar
ée de la suivante par un
544 "et" commercial (
&). Les caract
ères
545 sp
éciaux comme les espaces, les
"et" commerciaux, et les signes
546 "égal" sont convertis en leur
équivalent hexad
écimal pour
éviter
547 qu'ils ne g
âchent le travail. La cha
îne contenant les donn
ées doit
548 ressembler
à ceci :
</p>
551 name=Rich%
20Bowen
&city=Lexington
&state=KY
&sidekick=Squirrel%
20Monkey
554 <p>Vous verrez aussi parfois une cha
îne de ce type accol
ée
à une
555 URL. Dans ce cas, le serveur enregistre cette cha
îne dans la
556 variable d'environnement appel
ée
<code>QUERY_STRING
</code>. On a
557 alors affaire
à une requ
ête de type
<code>GET
</code>. Votre
558 formulaire HTML indique laquelle des m
éthodes
<code>GET
</code> ou
559 <code>POST
</code> est utilis
ée pour transmettre les donn
ées, en
560 d
éfinissant l'attribut
<code>METHOD
</code> au niveau de la balise
561 <code>FORM
</code>.
</p>
563 <p>Votre programme est ensuite charg
é d'extraire les informations
564 utiles de cette cha
îne. Heureusement, des biblioth
èques et des
565 modules sont
à votre disposition pour vous aider
à traiter ces
566 donn
ées, et
à g
érer les diff
érents aspects de votre programme
570 <!-- reprendre ici -->
571 <section id=
"libraries">
572 <title>Biblioth
èques et modules CGI
</title>
574 <p>Pour
écrire un programme CGI, il vous est conseill
é d'utiliser
575 une biblioth
èque de code, ou un module, qui effectueront une grande
576 partie du travail de base pour vous. Ceci vous permettra de diminuer
577 le nombre d'erreurs et d'acc
él
érer le d
éveloppement.
</p>
579 <p>Si vous
écrivez des programmes CGI en Perl, des modules sont
à
580 votre disposition
à <a href=
"http://www.cpan.org/">CPAN
</a>. A ce
581 sujet, le module le plus populaire est
<code>CGI.pm
</code>. Vous
582 pouvez aussi essayer
<code>CGI::Lite
</code>, qui impl
émente les
583 fonctionnalit
és strictement n
écessaires, mais suffisantes pour
584 la majorit
é des programmes.
</p>
586 <p>Si vous
écrivez des programmes CGI en C, vous disposez de
587 nombreuses options. L'une d'elles est la biblioth
èque
588 <code>CGIC
</code> de
<a href=
"http://www.boutell.com/cgic/"
589 >http://www.boutell.com/cgic/
</a>.
</p>
592 <section id=
"moreinfo">
593 <title>Pour plus d'informations
</title>
595 <p>Il existe un grand nombre de ressources CGI sur le web. Vous
596 pouvez discuter de probl
èmes CGI avec d'autres utilisateurs dans le
597 groupe Usenet
<a href=
"news:comp.infosystems.www.authoring.cgi">
598 comp.infosystems.www.authoring.cgi
</a>. En outre, la liste de
599 diffusion de la Guilde des Ecrivains HTML est une source
600 intarissable de r
éponses
à vos questions. Vous en saurez plus en
601 vous rendant
à <a href=
"http://www.hwg.org/lists/hwg-servers/"
602 >http://www.hwg.org/lists/hwg-servers/
</a>.
</p>
604 <p>Et bien entendu, vous devez lire la sp
écification CGI, qui
605 pr
ésente tous les d
étails en rapport avec les op
érations des
606 programmes CGI. La version originale se trouve au
<a
607 href=
"http://hoohoo.ncsa.uiuc.edu/cgi/interface.html">NCSA
</a>, et
608 dans la RFC IETF actuelle
<a
609 href=
"http://www.ietf.org/rfc/rfc3875">Common Gateway
610 Interface RFC
</a>.
</p>
612 <p>Lorsque vous postez une question
à propos d'un probl
ème CGI que
613 vous rencontrez, que ce soit dans une liste de diffusion ou dans un
614 newsgroup, faites en sorte de fournir suffisamment d'informations
615 sur le probl
ème rencontr
é, ce que vous attendiez exactement, et en
616 quoi ce qui se produit est r
éellement diff
érent de ce que vous
617 attendiez, quel serveur vous utilisez, en quel langage votre
618 programme CGI a
ét
é écrit, et, si possible, son code source. Ceci
619 permettra une r
ésolution plus ais
ée de votre probl
ème.
</p>
621 <p>Notez que les questions
à propos de probl
èmes CGI ne doivent
622 <strong>jamais
</strong> être post
ées dans la base de donn
ées de
623 bogues d'Apache,
à moins que vous ne soyez s
ûr d'avoir trouv
é un
624 probl
ème dans le code source d'Apache.
</p>