Scripts-fr - L'annuaire francophone des scripts CGI http://www.scripts-fr.com


Accueil

Les Cours

Archives ML

Inscription

Le Forum

Cours 1

Le but de ce cours ou plutôt devrais je dire formation par email est de vous permettre d'acquérir les bases de la programmation CGI en vous montrant et en les commentant des petits scripts CGI.
Le langage que nous allons utiliser est le PERL. Perl est un langage facile et performant pour tout ce qui est manipulation de texte. Le Perl permet de faire bien d'autre choses que la programmation CGI, il permet de faire de la programmation système sous Unix, Windows, Mac, … d'accéder a des bases de données, …
Il est possible de réaliser des scripts CGI dans d'autres langages tels que le C / C++, Python, Tcl, Rexx, …
Pour plus d'infos sur le Perl, le site de référence est bien entendu Perl.com ( http://www.perl.com/ ).


Pour tester les exemples que nous allons présenter, vous pouvez soit installer un serveur web sur votre propre ordinateur soit bénéficier des hébergements gratuits permettant l'utilisation de vos propres scripts CGI.
Parmi ces hébergeurs nous pouvons citer OVH.org qui propose 60mo avec CGI en domaine ou sous domaine ( http://vous.ovh.org/ ). OVH.org fonctionne sous Linux et tous les exemples présentés lors de cette session vont fonctionner avec cet hébergeur.
Contrairement à ce que nous avions fait lors des sessions précédentes, nous n'expliquons plus l'installation et la configuration d'un serveur web. Si vous souhaitez le faire, vous pouvez retrouver les mails explicatifs à l'adresse http://www.ovh.net/faq/ead-cgi-1/ mais nous ne répondrons pas aux questions relatives a ce sujet sur la liste (ni en privé d'ailleurs).


CGI ?
CGI (Common Gateway Interface) est un standard pour créer une interface entre des applications externes avec des serveurs d'informations tels que des serveurs WEB.
Un document HTML peut être une page statique ou une page dynamique si elle est le résultat du travail d'un CGI. Chaque fois que l'on appelle un CGI, il génère de l'information dynamiquement en s'exécutant.
Au début, les CGI ont surtout servi à interfacer des bases de données sur le WEB mais ils peuvent tout faire dans les limites navigateur / serveur.

Le navigateur WEB communique avec le serveur hôte, appelé Daemon, via le protocole HTTP (Hyper Text Transfert Protocol).
Quand un navigateur Web appelle un CGI qui accède à une BD, le serveur exécute le CGI. Le CGI exécute la requête et communique avec le moteur de base de données via les API du SGBD. Le SGBD retourne au CGI les données demandées, qui va les formater en HTML et les renvoyer au serveur.
Le serveur va les renvoyer au navigateur qui les a demandées. Le navigateur va alors formater les pages reçues de façon à en permettre l'affichage correct.

Un exemple ?
Utilisez un éditeur en mode texte (genre bloc notes sous Windows) et insérez y les lignes de code suivantes :
     #!/usr/bin/perl

print "Content-type: text/html \n\n";
print "Test de fonctionnement :-)";

Enregistrez le fichier avec le nom test.cgi.
Cet exemple est prévu pour fonctionner sur un serveur unix (testé chez OVH.org et BeLTsa.com).

Connectez vous sur le serveur FTP de votre hébergeur et uploadez (= envoyer vers le serveur) ce fichier en prenant soin de l'envoyer en mode ASCII et pas en mode binaire.
Vous devez bien évidemment le placer dans un répertoire permettant l'exécution de scripts CGI (généralement un répertoire cgi-bin).
Lors de l'envoi de fichiers CGI, la plupart des hébergeurs mettent directement les CHMOD (droits relatifs à un fichier : lecture, écriture et exécution pour différents groupes d'utilisateurs : propriétaire du fichier, groupe d'utilisateur auquel appartient cet utilisateur et le reste du monde) aux bonnes valeurs.
Pour un script CGI cela doit être 755 (en général).
Pour quelques explications supplémentaires sur le CHMOD : http://www.scripts-fr.com/faq.shtml#chmod

En supposant que vous ayez placé le fichier dans le répertoire CGI-BIN, l'url du script est http://vous.ovh.org/cgi-bin/test.cgi (ou vous.ovh.org est l'url de base de votre site).
Tapez cette adresse dans votre navigateur et si tout c'est bien passé (upload, chmod, …) vous devriez voir une page web contenant le texte " Test de fonctionnement :-)".
Exemple de ce que donne le script


Et si ca ne fonctionne pas ?
P : Vous voyez le code source du script
S : Le script n'est pas exécuté soit par ce que votre hébergeur n'accepte pas les CGI en perl (c'est le cas chez multimania, citeweb, ifrance, chez, … et d'autres) ou que l'extension (.cgi) n'est peut être pas supportée.

P : Internal Server Error (et/ou erreur 500)
S : C'est une erreur courante qui peut avoir plusieurs causes : le chemin de perl n'est pas correct (#!/usr/bin/perl doit être adapté à la configuration de votre serveur) ou le script n'a pas été transféré en mode ASCII ou le script contient des erreurs de syntaxe

P : Acces Forbidden (et/ou erreur 403)
S : Comme le dit l'erreur, l'accès au script est interdit. Cela arrive fréquemment si le chmod du script n'est pas correct (généralement 755)


Une autre erreur ?
Parlez en sur la liste de diffusion.

Le 2ème script va permettre d'en savoir un peu plus sur le serveur qui vous héberge. Ce script va afficher les variables d'environnement du serveur :
     #!/usr/bin/perl

print "Content-type: text/html\n\n";
while (($key,$val) = each %ENV)
{
print "$key = $val <BR>\n"
}

Enregistrez le sous le nom que vous souhaitez, copiez le sur votre serveur et exécutez le avec votre navigateur.
Exemple de ce que donne le script


C'est tout pour cette fois-ci. Le prochain 'cours' sera envoyé dans environ 1 semaine. Ce délai peut être mis a profit pour tester les scripts et poser des questions relatives aux problèmes d'upload, chmod, …


Liens utiles :
http://guides.rotule.net/
http://www.ftls.org/fr/initiation/perl/
http://www.ovh.net/faq/ead-cgi-1/
http://www.scripts-fr.com/


Les fichiers utilisés :
1er script
Variables d'environement



Hit-Parade

Pour tout commentaire, n'hésitez pas à contacter le webmaster
© 1999-2001
Dernière modification : Tuesday, 16-Apr-2002 20:41:17 CEST

Design du site par ionet-look