Common Gateway Interface

Slides:



Advertisements
Présentations similaires
Cours de C – Séance dexercices 19 Octobre Objectif Ecrire un serveur HTTP Sans gérer la partie réseau, on utilisera un utilitaire pour cela Serveur.
Advertisements

Cours de C – Séance dexercices 02 Octobre Protocole: client Protocole : – Requête client : GET /test.html HTTP/1.1\r\n Host: nom_de_l_hote\r\n Parameter:
Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Rappels C.
- Couche 7 - Couche application. Sommaire 1)Introduction 1)DNS 1)FTP et TFTP 1)HTTP 1)SNMP 1)SMTP 1)Telnet.
Exposé de Système - Informatique et Réseau
(Classes prédéfinies – API Java)
TRANSFER Alger – Serveur Web Nicolas Larrousse Septembre Petit historique du Worl Wide Web Notion dHypertexte Extension à internet par Tim Berners.
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
HTML Les types de balises
TP 3-4 BD21.
Servlet JAVA.
Formulaire HTML Introduction. Définition de formulaire.
FLSI602 Génie Informatique et Réseaux
FLSI602 Génie Informatique et Réseaux
11:16:331 Programmation Web Programmation Web : Formulaires HTML Jérôme CUTRONA
Parallel Programming in C with MPI and OpenMP
Oct.-2000DESS IIDEE © B. BAH 1 ASP Caractéristiques dun fichier ASP Son extension : « *.asp » La balise: Son indépendance vis à vis de toute plate–forme,
Le Téléphone Russe Le Téléphone Russe. Le Téléphone Russe Le Téléphone Russe.
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
XML-Family Web Services Description Language W.S.D.L.
Le langage PHP 5.
Le langage ASP Les variables d'environnement HTTP avec Request.
Connexion en mode application. Bases de données - Yann Loyer2 Connexion en mode application Pour tout type dutilisateurs : –passif, actif, gérant Permettre.
Les instructions PHP pour l'accès à une base de données MySql
Bibliothèque de fonctions PHP
Quatre exemples sous WebCLIPS
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
Introduction à la programmation (Java)
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Abderrahmane Bouarissa Damien Burglin Arnaud Sansig
Manipulation de formulaires en Javascript
Le langage ASP Les formulaires avec Request. Les formulaires sont employés pour transmettre des informations saisies par un client à une application Web.
Le formulaire Les chaînes de requêtes. Les chaînes de requêtes (QueryStrings) correspondent à des informations associées à l'adresse URL avec un point.
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
1 PHP 1.Langage PHP 1.1. Types de base, variables et constantes 1.2. Opérateurs et expressions 1.3. Instructions 1.4. Fonctions 2.Accès aux bases de données:
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
AJAX.
Standard Template Library
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Initiation au web dynamique
Animateur : Med HAIJOUBI
La Programmation CGI Principe Général Traitement des informations
Javascript 1° PARTIE : LES BASES
Présenté par COMTE Jeremy et DE LAZZARI Thomas Sommaire b Présentation générale b Include b Notion de variables b MySQL.
Techniques Internet de Base Licence 2 (Info, Maths, PC/PA) Université Jean Monnet Ruggero G. PENSA
et quelques rappels sur certains éléments du langage C
PHP 5° PARTIE : LES COOKIES
Argc et argv Utilisation des paramètres de la ligne de commande.
Annexe 2 entêtes HTTP et cookies. Accéder aux objets requêtes et réponses Ces objets sont disponibles dans les classes clé depuis la méthode awake les.
T ECHNOLOGIES WEB CHAPITRE IV : L E LANGAGE PHP 1 Mme Amani JARRAYA & Mohamed MOHSEN.
 Requêtes MySQL en PHP Introduction
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Auvray Vincent Blanchy François Bonmariage Nicolas Mélon Laurent
Programmation Système et Réseau
http 1.1.  connexion persistante Browser Mozilla Firefox Adresse ip.
Abderrahmane Bouarissa Damien Burglin Arnaud Sansig
Fiabilisation des lectures au clavier. Problèmes liés à scanf: rencontre de caractères invalides Sans arrêt prématuré: compte = scanf(``%d%c``;&n,&c);
Les variables fichiers. Le type fichier On manipule les fichiers par l’intermédiaire de structures FILE décrites dans stdio.h FILE *monFichier; –Nom physique.
INTERNET Le langage HTML
 Formulaires HTML : traiter les entrées utilisateur
Initiation au JavaScript
Deug 11 Systèmes d ’Information : 5a Michel de Rougemont Université Paris II Les Formulaires.
Initiation au web dynamique Licence Professionnelle.
Les Servlets Présentation Cycle de vie Principe de fonctionnement
HTML Création et mise en page de formulaire Cours 3.
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
Développement d’applications Web
Transcription de la présentation:

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 d’une 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 d’un document HTML ou d’effectuer un traitement sur des données envoyées par un client, en corrélation ou pas avec d’autres données connues du serveur uniquement (ex : base de données/connaissances)

Common Gateway Interface

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, c’est à 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 d’un dialogue Ceci est particulièrement gênant pour certaines applications qui aimeraient savoir s’ils ont affaire avec un client déjà rencontré ou d’autres qui nécessitent un « dialogue » de plusieurs échanges La commande GET Requête du client (sur le port 80 d’une machine serveur) GET hello.html Réponse du serveur <HTML> <BODY bgcolor=#FFFFFO> <B>Hello, World !</B> </BODY> </HTML>

Common Gateway Interface Protocole HTTP et mise en œuvre des CGI Le client envoie une commande GET au serveur Le serveur HTTP identifie le paramètre comme un exécutable Le serveur exécute le CGI et attend une réponse de celui-ci Le CGI retourne au processus père un flot de caractères Le serveur vérifie qu’il s’agit bien de HTML (Content-Type:text/html) Le serveur retourne la page HTML au client

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 <HTML> <BODY bgcolor=#FFFFFO> <B>Hello, World !</B> </BODY> </HTML> #include <stdio.h> int main(void) { printf("Content-TYPE: text/html\n\n"); printf("<HTML>\n<BODY bgcolor=#FFFFFO>\n"); printf("<B>Hello, World !</B>\n"); printf("</BODY>\n</HTML>\n"); }

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 : <HTML> <HEAD><TITLE>Exemple de formulaire</TITLE></HEAD> <BODY bgcolor=#FFFFFO> <CENTER> <B>CGI Multiplicateur</B> <P><EM>Entrez deux valeurs :</EM> <FORM action="cgi-bin/mult.cgi" method="GET"> <INPUT name="x" size="5"> <INPUT name="y" size="5"> <INPUT type="submit" value="MULTIPLIER"> </FORM> </CENTER> </BODY> </HTML>

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 <HTML> <HEAD><TITLE>Multiplication</TITLE></HEAD> <BODY> <H3>Résultat de la multiplication :</H3> <P>Le produit de 2 et 3 est 6. </BODY> </HTML> Comment le CGI récupère t-il les paramètres x et y ? Le serveur a affecté deux variables d’environnement 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 d’extraire 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)

Common Gateway Interface Code source en langage C du CGI mult.cgi #include <stdio.h> #include <stdlib.h> int main(void) { char *data; long x,y; printf("Content-TYPE: text/html\n\n"); printf("<HTML>\n<HEAD><TITLE>Multiplication</TITLE></HEAD>\n"); printf("<BODY>\n<H3>Résultat de la multiplication :</H3>\n"); data = getenv("QUERY_STRING"); if(data == NULL) printf("<P>Erreur : Problème lors du passage des données\n"); else if(sscanf(data, "x=%ld&y=%ld", &x, &y)!=2) printf("<P>Erreur : Données invalides (ne sont pas numériques)\n"); else { printf("<P>Le produit de %ld et %ld est %ld.\n", x, y, x*y); printf("</BODY>\n</HTML>\n"); }

Common Gateway Interface Une autre commande HTTP : la commande POST Les données parviennent au CGI via l’entrée standard (stdin) Les données sont codées exactement comme pour le GET Exemple de formulaire HTML associé à une méthode POST <HTML> <HEAD><TITLE>Méthode POST</TITLE></HEAD> <BODY> <FORM action="cgi-bin/getenv.cgi" method="POST"> <INPUT type= "hidden" name="cache" value="7"> <INPUT name="texte" size="40"> <INPUT type="radio" name="radio1">radio1 <INPUT type="radio" name="radio2">radio2 <INPUT type="submit"> </FORM> </BODY> </HTML>

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 d’environnement : 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"

Common Gateway Interface Réponse du CGI : Code source en langage C du CGI getenv.cgi #include <stdio.h> #define DATALEN 256 int main(void) { char data[DATALEN]; fgets(data, DATALEN, stdin); printf("Content-TYPE: text/html\n\n"); printf ("<HTML><HEAD><TITLE>Variables</TITLE></HEAD><BODY>\n"); printf ("<BR>REQUEST_METHOD : %s\n", getenv("REQUEST_METHOD")); printf ("<BR>CONTENT_TYPE : %s\n", getenv("CONTENT_TYPE")); printf ("<BR>CONTENT_LENGTH : %d\n", atoi(getenv("CONTENT_LENGTH"))); printf ("<BR>DATA : %s\n", data); printf ("</BODY></HTML>\n"); }