Les scripts CGI permettent d'introduire
l'interactivité dans les sites web. A l'aide de Bash,
l'interpéteur de commandes Unix, on peut réaliser
des scripts simples.
Les notions dont nous allons parler sont extraites de nos lectures.
Pratique de MySQL et PHP, par philippe Rigaux,
édition O'REilly.
Chapitre 2 : programmation web.
Extraits :
«Jusqu'à présent les pages
HTML que nous avons créées sont totalement
statiques. Leur contenu est fixé à l'avance et
l'utilisateur ne dispose d'aucun moyen d'action pour
sélectionner les informations qui l'intéressent.
Un autre inconvénient, du point de vue du webmestre cette
fois, est que la maintenance du site implique la manipulation d'un
ensemble de pages HTML qui peut rapidement devenir très
volumineux. (...)
Le Common Gateway Interface (CGI) constitue la technique traditionnelle
pour pallier les deux inconvénients ci-dessus. Le principe
consiste à produire les documents HTML par un programme qui
est associé au serveur web. Ce programme reçoit
en outre des paramètres saisis par l'utilisateur. (...)
Les formulaires constituent un moyen privilégié
d'interaction...»
Alors qu'il est facile d'expérimenter les scripts en ligne,
à partir d'un hébergement gratuit (de type Free
par exemple), il est beaucoup plus incertain de trouver un
hébergeur qui vous installera un Forth sur sa machine.
Les exemples qui suivent s'exécutent en local sur une
machine Linux sur laquelle le serveur Apache a
été installé et est en cours
d'exécution. Comme je ne dispose que d'une seule machine
active à la fois, le réseau est simulé
: le navigateur web permet d'afficher le site web qui
s'exécute à l'adresse
«localhost».
Si vous ne remplissez pas ces conditions, il faut (dans l'ordre) :
- rechercher la bonne version d'Apache pour votre machine (Windows ou
Linux - pour Mac je ne connais pas)
- l'installer (cela dépend de votre système,
prendre par exemple EasyPhP pour Windows).
- le démarrer : avec Linux, lancer le script
«apachectl» en étant root
apachectl start
- savoir à quel répertoire
correspond la racine du site (ce qui est désigné
par «localhost») :
sur ma machine :
/var/www/html
La simple énumération ci-dessus
pourrait laisser croire que c'est facile... et cela l'est sans-doute
quand on a terminé son cycle d'apprentissage. Quand on est
au début de celui-ci, c'est souvent
incompréhensible, accompagné de nombreux messages
d'erreurs en anglais.
Ce qui suit résume un parcours difficile qui pourra vous
aider à vous retrouver.
Pour me simplifier la vie, j'ai donné à
l'utilisateur lamba (moi...) tous les droits sur le
répertoire /var/www de ma machine... Ceci est acceptable
quand on est en local, mais serait bien sûr très
différent en ligne.
Dans tout ce qui suit,
Projet :
Le formulaire devra contenir un bouton à cliquer ;
si l'on clique sur le bouton «valider» un
script-cgi s'exécutera ;
si l'on clique sur le bouton annuler, rien ne se passera.
<html><head><tittle></title></head><body>
<h1>Cliquez sur un bouton</h1>
<FORM ACTION="http://localhost/cgi-bin/coucou.cgi" METHOD=POST
ENCTYPE="multipart/form-data">
<br>
<h3>Choix : </h3>
<input type = SUBMIT value='valider'>
<input type = RESET value='annuler'>
</FORM>
</body></html>
La partie active du formulaire commence par <FORM et se termine
par </FORM>
ACTION="http://localhost/cgi-bin/coucou.cgi" permet de
définir le nom et la localisation du script CGI. Remarquer
la localisation relative à la racine du site :
«localhost» liée au fait que
l'expérimentation se fait en local, à partir d'un
serveur Apache s'exécutant sur la même machine.
Dans le cas d'un site s'exécutant à
l'extérieur, on pourrait avoir
«monsite.com» ou tout autre dénomination.
METHOD=POST signifie que les actions effectuées par
l'utilisateur vont être transmises vers le serveur qui
distribue les pages web.
«<input type = SUBMIT» permet de
définir le premier bouton
«value='valider'>» texte du premier bouton
<input type = RESET value='annuler'> second bouton
Pour que cela marche «pour de vrai», il faut la
placer à la racine du site, soit, sur ma machine, dans le
dossier :
/var/www/html
Surtout, ne pas cliquer sur l'icône du fichier... cela ne
lancerait pas la simulation de site web.
Il faut :
lancer un navigateur webmestre
introduire l'adresse suivante http://localhost/formul1.html
si le navigateur ne vous affiche pas la page, c'est qu'il y a des
problèmes d'installation ou de configuration d'Apache (on y
reviendra plus loin)
si vous voyez le formulaire, passez à l'étape
suivante.
Avant de tenter un script en Forth, il faut déjà
s'assurer qu'un script «banal» s'exécute
réellement.
Sous Linux, le plus simple est d'essayer un script bash (sous Windows,
ce serait un fichier «.bat»).
#!/bin/sh
echo "Content-Type: text/plain"
echo
echo "Vous avez cliqué sur le bouton Valider"
@echo off
echo "Content-Type: text/plain"
echo
echo "Vous avez cliqué sur le bouton Valider"
Recopier le script dans le dossier destiné à
recevoir les scripts CGI du site : sur ma amchine, c'est
/var/www/cgi-bin
Sous Linux, rendre le script exécutable en introduisant
(dans le répertoire /var/www/cgi-bin) la commande suivante :
chmod +x coucou.cgi
Si vous êtes sous Windows, modifier le code de
la page formul1.html :
<FORM ACTION="http://localhost/cgi-bin/coucou.bat" METHOD=POST
ENCTYPE="multipart/form-data">
Pour visualiser le résultat, et toucher ainsi notre
récompense, il faut :
- lancer un navigateur
- introduire l'adresse suivante http://localhost/formul1.html
si le navigateur affiche la page, tester ce qui se passe quand on
clique sur l'un ou l'autre bouton. Normalement, on obtient
«Vous avez cliqué sur le bouton Valider»
si l'on clique sur «Valider» et rien si l'on clique
sur annuler.
Normalement, on peut conclure que nous avons réussi
à introduire un peut d'interactivité.
Que tout ait bien marché ou raté, il faudra se
pencher sur la configuration d'Apache.
Haut de page