next up previous contents Next:  Formulaires et CGI. Up: Installation et configuration d'Apache. Previous:  Portions de code incluses   Table des matières  

37.2.8  CGI - Interface passerelle commune.

CGI -Common Gateway Interface- permet à une URL de pointer vers un script. Cependant, les données envoyées sur votre navigateur sont le résultat du script et non le contenu du script lui-même. Pour essayer cela, créez un fichier nommé /opt/apache/htdocs/test.cgi:

#!/bin/bash 
 
echo 'Content-type: text/html' 
echo 
echo '<HTML>' 
echo ' <HEAD>' 
echo '  <TITLE>Mon premier CGI</TITLE>' 
echo ' </HEAD>' 
echo ' <BODY bgcolor=#CCCCCCC text=''#000000''>' 
echo 'Ceci est mon premier CGI<P>' 
echo 'Visitez s'il vous plaît' 
echo '   <A HREF=''http://rute.sourceforge.net/''>' 
echo '    The Rute Home Page' 
echo '   </A>' 
echo 'pour plus d'information.</P>' 
echo ' </BODY>' 
echo '</HTML>' 


Rendez ce script exécutable avec chmod a+g test.cgi et testez son résultat en l'exécutant en ligne de commandes. Ajoutez la ligne:

AddHandler cgi-script .cgi 


à votre fichier httpd.conf. Ensuite, modifiez Options dans le répertoire /opt/apache/htdocs de manière à inclure ExecCGI, comme ceci:

<Directory ``/opt/apache/htdocs''> 
   Options Indexes FollowSymLinks MultiViews ExecCGI 
   AllowOverride All 
   Order allow,deny 
   Allow from all 
</Directory> 


Après avoir redémarrer Apache, vous devriez pouvoir visiter l'URL http://localhost/test.cgi. Si des problèmes apparaissent, n'oubliez pas de lancer tail /opt/apache/logs/error_log de manière à obtenir un rapport complet.

Pour obtenir une liste exhaustive des variables d'environnement disponibles pour vos programmes CGI, essayez le script suivant:

#!/bin/sh 
 
echo 'Content-type: text/html' 
echo 
echo '<HTML>' 
echo '<PRE>' 
set 
echo '</PRE>' 
echo '</HTML>' 


Ce script révèlera les variables ordinaires de bash mais, il y a moyen d'accèder aussi à des variables plus intéressantes comme QUERY_STRING, par exemple. Modifiez un peu votre script:

#!/bin/sh 
 
echo 'Content-type: text/html' 
echo 
ecch '<HTML>' 
echo '<PRE>' 
echo $QUERY_STRING 
echo '</PRE>' 
echo '</HTML>' 


et rendez vous à l'URL suivante. Il est aisé de voir comment les variables peuvent être passées à un script.

L'exemple précédent n'est toutefois pas très attractif. Cependant, il s'avère utile quand les scripts présentent une logique complexe ou quand ils peuvent donner accès à des informations auxquelles Apache ne peut accéder de lui-même. Dans le chapitre 39, nous verrons comment déployer une base de données SQL. Lorsque vous aurez étudié SQL, vous pourrez revenir ici et remplacer votre script CGI par:

#!/bin/bash 
 
echo 'Content-type: text/html' 
echo 
 
pqsl -d template1 -H -c ``SELECT * FROM pg_tables;''  
 
 
Ce script videra la liste des tables de la base de données template1 si cette dernière existe. Apache devra fonctionner en tant qu'utilisateur pouvant accèder à la base de données, ce qui signifie qu'il faudra changer User nobody enUser postgres [notez que pour des raisons de sécurité, nous devriez vraiment limiter les utilisateurs pouvant se connecter à la base de données postgres. Voir la section 39.4].


next up previous contents Next:  Formulaires et CGI. Up: Installation et configuration d'Apache. Previous:  Portions de code incluses   Table des matières  
1-01-2006