Accueil | IGC | STG | BTSIG | Cours | Didactique | Exos | Glossaire | Labo | Sujets | Outils Imprimer cette page



Rechercher
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

3. Premiers programmes CGI

a. Le tout premier

Saisissez le programme ci-dessous :

// programme cgi01.cpp

#include <cgic.h>
#include <iostream.h>
int cgiMain() {

cgiHeaderContentType("text/html");
cout << "<head>";
cout << "<title>Premier programme cgi</title>";
cout << "</head>";
cout << "<body>";
cout << "Cette page est générée par programme";
cout << "</body>";
cout << "</html>";
return 0;

}

Compilation du programme par :

g++ -o cgi01 cgi01.cpp /usr/lib/cgic.o

Remarques

- La bibliothèque CGIC implique le remplacement de la traditionnelle fonction "main" par une fonction "cgiMain" jouant le rôle de "programme principal".

- cgiHeaderContentType permet d'indiquer au navigateur client le type de données transmises (ici, du texte html).

- Le flot de sortie cout ne représente plus l'écran, mais le flux d'informations entre le programme cgi et le navigateur. Il faut donc envoyer sur ce flux le code HTML permettant au navigateur d'afficher le document souhaité. Il est également possible d'utiliser la sortie cgiOut créée par la bibliothèque.

Test du programme

Copier l'exécutable : cp cgi01 /home/httpd/cgi-bin/

Lancer un navigateur sur le poste client et pointer sur "http://caiman/cgi-bin/cgi01"

b. Une page dynamique

Le second programme produit une page dynamique. Le contenu de la page HTML construite dépend du poste client (navigateur utilisé et adresse IP) et de la date de consultation.

Il illustre notamment l'utilisation des variables d'environnement CGI. Ces variables sont mises à disposition du programme par le serveur HTTP. Elles concernent le serveur (nom, version du logiciel, ...) ou le client (navigateur, adresse IP, ...).

// cgi02.cpp
#include <iostream.h>
#include <time.h>
#include <cgic.h>
int cgiMain() {

cgiHeaderContentType("text/html");
cout << "<head>";
cout << "<title> Programme espion</title>";
cout << "</head>";
cout << "<body>";
time_t moment;
int jj, mm, aa;
moment = time(NULL);
jj=localtime(&moment)->tm_mday;
mm=gmtime(&moment)->tm_mon+1;
aa=gmtime(&moment)->tm_year+1900;
cout << "Bonjour, ici Big Brother...<br><br>";
cout << "Nous sommes le " << jj << "/" << mm << "/" << aa << "<br>";
cout << "Votre adresse IP est " << cgiRemoteAddr << "<br>";
cout << "Vous utilisez le navigateur " << cgiUserAgent << "<br>";
cout << "</body>";
cout << "</html>";
return 0;

}

Il est clair que ce programme ne produit pas la même page html pour tout le monde !

   

_____________________________________________  
© - Réseau C E R T A 

Ministère de l'Éducation Nationale