[Look Inside]

Programmes CGI avec Delphi et Kylix :

Un tutorial de Paul TOTH <tothpaul@free.fr>

Juillet 2001 : ce tutorial est maintenant compatible Kylix !

Voici quelques explications sur la programmation CGI avec Delphi et Kylix, n'hésitez pas à m'envoyer vos remarques !
Vous pouvez télécharger ce tutorial avec ou sans les fichiers exemples.

Sommaire :


Introduction

Précisions :

  1. pour faire du CGI il faut un Serveur Web évidemment (sous Windows pour Delphi, sous Linux pour Kylix)...
  2. mon expérience en la matière sur un Serveur Lotus Domino sous NT, et avec Apache sur Mandrake 7.0 (linux).
  3. j'utilise Delphi 2.0, mais ce tutorial est compatible Delphi 3,4,5 et 6...et Kylix !
Remarque: Si vous désirez utiliser des DLL ISAP/NSAPI, utilisez Delphi 5/6; ce tutorial reste cependant utile si vous désirez comprendre comment fonctionnent les CGI.

Le principe :

dans une page HTML (ou directement l'URL dans le browser) tu mets un lien vers ton programme. Voici quelques exemples :
Appel par un lien :  <a href="/cgi-bin/program.exe">
Demander une image :  <img src="/cgi-bin/program.exe">
Formulaire en GET :  <form method=GET action="/cgi-bin/program.exe"> ... </form>
Formulaire en POST :  <form method=POST action="/cgi-bin/program.exe"> ... </form>
Appel direct :  http://www.tonserver.fr/cgi-bin/program.exe

cgi-bin :

c'est un alias déclaré sur le serveur qui pointe sur le répertoire qui contient les programmes CGI.
Par exemple :
Sous Windows :  c:\internet\delphi\cgi
Sous Linux :  /home/httpd/cgi-bin

Lancement du programme :

lorsque tu clique sur le lien (ou quand l'image se charge...) le serveur execute le programme (et pas le poste de travail) et attend la réponse.

La réponse du programme :

le plus simple est de faire une application "console" {$apptype console} qui ressemble à une application DOS mais Sous Windows 95/NT (sous Linux c'est implicite).
Ce n'est pas obligatoire mais ça permet de tester en locale à l'écran...
Voici le programme CGI le plus simple !
Program ExempleCGI; 

{$apptype console}

begin
 WriteLn('content-type: text/html');
 Writeln;
 WriteLn('Bonjour le monde !');
end.
Content-type :  c'est la description du contenu (ici du texte HTML)
Ligne vierge :  c'est OBLIGATOIRE, c'est pour dire "fin de l'entête/début du document" (le browser n'affiche pas l'entête).
Le reste :  c'est ce que tu affiches dans "Affichage/Source" (Internet Explorer)
L'appel se fait par :  http://votreserver/cgi-bin/ExempleCGI

Writeln :

Et oui, WriteLn suffit, en effet le texte envoyé sur la "sortie standard" est récupéré par le serveur, et le tout est renvoyé vers le brower.

D'ailleurs, sous Windows, on peut s'amuser a faire du CGI avec des .BAT !!!
@ECHO OFF
ECHO content-type: text/html
ECHO.
ECHO ^<HTML^>^<HEAD^>^<TITLE^>^</TITLE^>^</HEAD^>^<BODY^>
ECHO Bonjour le monde !
ECHO ^</BODY^>^</HTML^>
Notez l'utilisation du "^" pour devant les symbols réservés du DOS (< > & ...)

Bon c'est pas mal comme introduction je pense...

Au menu des prochaines mise à jours :


Notez que la mise à jours sera proportionnelle à vos remarques et questions :)
A +