La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Introduction aux CGI © Jérôme Lehuen (25/06/00) 1 Common Gateway Interface Questions pour une architecture client-serveur –Comment un client peut envoyer.

Présentations similaires


Présentation au sujet: "Introduction aux CGI © Jérôme Lehuen (25/06/00) 1 Common Gateway Interface Questions pour une architecture client-serveur –Comment un client peut envoyer."— Transcription de la présentation:

1 Introduction aux CGI © Jérôme Lehuen (25/06/00) 1 Common Gateway Interface Questions pour une architecture client-serveur –Comment un client peut envoyer des données vers un serveur ? –Comment générer dynamiquement une page HTML ? Constat sur le format HTML –Le contenu dune page HTML est statique (même si on ajoute quelques petites animations sympathiques) Intérêt des CGI (Common Gateway Interface) –Permettre une personnalisation du contenu dun document HTML ou deffectuer un traitement sur des données envoyées par un client, en corrélation ou pas avec dautres données connues du serveur uniquement (ex : base de données/connaissances)

2 Introduction aux CGI © Jérôme Lehuen (25/06/00) 2 Common Gateway Interface

3 Introduction aux CGI © Jérôme Lehuen (25/06/00) 3 Common Gateway Interface Le protocole HTTP (Hyper Text Transfert Protocol) Permet la communication entre des clients et un serveur à travers le réseau Internet, sous une forme intelligible Est un protocole à état, cest à dire que chaque connexion est indépendante de la précédente et que le protocole ne permet pas de mémoriser un quelconque élément dun dialogue –Ceci est particulièrement gênant pour certaines applications qui aimeraient savoir sils ont affaire avec un client déjà rencontré ou dautres qui nécessitent un « dialogue » de plusieurs échanges La commande GET –Requête du client (sur le port 80 dune machine serveur) GET hello.html –Réponse du serveur Hello, World !

4 Introduction aux CGI © Jérôme Lehuen (25/06/00) 4 Common Gateway Interface Protocole HTTP et mise en œuvre des CGI 1Le client envoie une commande GET au serveur -Le serveur HTTP identifie le paramètre comme un exécutable 2Le serveur exécute le CGI et attend une réponse de celui-ci 3Le CGI retourne au processus père un flot de caractères -Le serveur vérifie quil sagit bien de HTML (Content-Type:text/html) 4Le serveur retourne la page HTML au client

5 Introduction aux CGI © Jérôme Lehuen (25/06/00) 5 Common Gateway Interface La commande GET vers un CGI –Requête du client GET cgi-bin/hello.cgi –Code source en langage C du CGI hello.cgi –Réponse du serveur Hello, World ! #include int main(void) { printf("Content-TYPE: text/html\n\n"); printf(" \n \n"); printf(" Hello, World ! \n"); printf(" \n \n"); }

6 Introduction aux CGI © Jérôme Lehuen (25/06/00) 6 Common Gateway Interface Les formulaires en HTML –Permet de saisir et de transmettre des données vers le serveur –Exemple de page HTML avec formulaire : Exemple de formulaire CGI Multiplicateur Entrez deux valeurs :

7 Introduction aux CGI © Jérôme Lehuen (25/06/00) 7 Common Gateway Interface Commande GET vers un CGI avec paramètres –Requête du client GET cgi-bin/mult.cgi?x=2&y=3 –Réponse du serveur Multiplication Résultat de la multiplication : Le produit de 2 et 3 est 6. Comment le CGI récupère t-il les paramètres x et y ? –Le serveur a affecté deux variables denvironnement La variable REQUEST_METHOD contient la méthode invoquée : "GET" La variable QUERY_STRING contient les données : "x=2&y=3" –Il suffit dextraire les valeurs de x et de y dans la chaîne de caractères –En langage C, on peut utiliser la fonction sscanf (voir page suivante)

8 Introduction aux CGI © Jérôme Lehuen (25/06/00) 8 Common Gateway Interface Code source en langage C du CGI mult.cgi #include int main(void) { char *data; long x,y; printf("Content-TYPE: text/html\n\n"); printf(" \n Multiplication \n"); printf(" \n Résultat de la multiplication : \n"); data = getenv("QUERY_STRING"); if(data == NULL) printf(" Erreur : Problème lors du passage des données\n"); else if(sscanf(data, "x=%ld&y=%ld", &x, &y)!=2) printf(" Erreur : Données invalides (ne sont pas numériques)\n"); else { printf(" Le produit de %ld et %ld est %ld.\n", x, y, x*y); printf(" \n \n"); }

9 Introduction aux CGI © Jérôme Lehuen (25/06/00) 9 Common Gateway Interface Une autre commande HTTP : la commande POST –Les données parviennent au CGI via lentrée standard (stdin) –Les données sont codées exactement comme pour le GET –Exemple de formulaire HTML associé à une méthode POST Méthode POST radio1 radio2

10 Introduction aux CGI © Jérôme Lehuen (25/06/00) 10 Common Gateway Interface Aspect du formulaire chez le client : Comment le CGI récupère t-il les paramètres ? –Le serveur a affecté trois variables denvironnement : La variable REQUEST_METHOD contient la méthode : "POST" La variable CONTENT_LENGTH contient la taille des données : 30 La variable CONTENT_TYPE contient le type des données : –"application/x-www-form-urlencoded" Le buffer de stdin contient les données : –"cache=7&texte=coucou&radio1=on"

11 Introduction aux CGI © Jérôme Lehuen (25/06/00) 11 Common Gateway Interface #include #define DATALEN 256 int main(void) { char data[DATALEN]; fgets(data, DATALEN, stdin); printf("Content-TYPE: text/html\n\n"); printf (" Variables \n"); printf (" REQUEST_METHOD : %s\n", getenv("REQUEST_METHOD")); printf (" CONTENT_TYPE : %s\n", getenv("CONTENT_TYPE")); printf (" CONTENT_LENGTH : %d\n", atoi(getenv("CONTENT_LENGTH"))); printf (" DATA : %s\n", data); printf (" \n"); } Réponse du CGI : Code source en langage C du CGI getenv.cgi


Télécharger ppt "Introduction aux CGI © Jérôme Lehuen (25/06/00) 1 Common Gateway Interface Questions pour une architecture client-serveur –Comment un client peut envoyer."

Présentations similaires


Annonces Google