LES SCRIPTS CGI Présentation Mise en œuvre La programmation Les variables d environnement
LES SCRIPTS CGI Présentation Mise en œuvre La programmation Les variables d environnement
OBJECTIFS Historiquement, site web dynamique : traitement des formulaires. Disparition des scripts CGI sur les sites web Très utilisés sur les systèmes embarqués car ils sont simples d'utilisation et leur mise en place ne demande que peu de ressources.
DÉFINITION Common Gateway Interface : interface de passerelle commune Programme exécuté par le serveur web permettant d'envoyer au navigateur de l'internaute un code HTML créé automatiquement par le serveur Interface indépendante du langage : C, Python, PHP, script shell, Java,
FONCTIONNEMENT 1. L'utilisateur appelle un "script" CGI sur le serveur Apache ; 2. Le serveur Apache transmet la requête au programme appelé ; 3. Le programme appelé génère un fichier résultat en sortie ; 4. Le fichier résultat est envoyé au serveur web qui le met au format HTML ; 5. Le fichier HTML résultat est envoyé par le serveur sur l e web ; 6. Le fichier résultat est affiché sur le poste de l'utilisateur.
LES SCRIPTS CGI Présentation Mise en œuvre La programmation Les variables d environnement
INSTALLATION Répertoire spécifique pour les scripts CGI Configuration du serveur Apache pour prendre en compte ce répertoire (C:\wamp\bin\apache\apache2.2.8\conf)
EXÉCUTION DU SCRIPT Copie du script (langage interprété) ou de l exécutable dans le répertoire dédié Lancement dans le navigateur
EXEMPLE DE CODE // Programme CGI permettant d'afficher le nom du serveur web sur lequel il est exécuté #include <iostream> using namespace std; void main() { // Définition des variables char *server_name; // Récupération de la variable CGI correspondante server_name = getenv("server_name"); // Indication du type de fichier retourné cout <<"Content-type: text/html\n\n"; // Affichage du résultat cout << "<html><header><title>nom du serveur</title></header><body>"; cout << "<b>nom du serveur</b> : " << server_name <<"</body></html>"; }
LES SCRIPTS CGI Présentation Mise en œuvre La programmation Les variables d environnement
CONTENU DU FICHIER Sortie standard (cout) du programme -> fichier à envoyer Première ligne du fichier : en-tête HTTP permettant de préciser le type de contenu envoyé au navigateur : fichier html : «content-type : text/html» fichier gif : «content-type : image/gif» fichier quicktime : «content-type : text/quicktime»
CAS D UN FICHIER HTML content-type : text/html\n\n le premier saut de ligne sert simplement à retourner à la ligne ; le second sert à créer la ligne vide séparant les entêtes HTTP du corps du message, comme le veut la spécification du protocole HTTP La suite : le fichier HTML classique
RÉCUPÉRATION DES INFORMATIONS Demande de la page suite à un formulaire (méthode GET ou POST) Forme : Nom_de_l_element=valeur Plusieurs informations séparées par des & : champ1=valeur1&champ2=valeur2&champ3=va leur3 Récupération par les variables d environnement ou par l entrée standard stdin
LES SCRIPTS CGI Présentation Mise en œuvre La programmation Les variables d environnement
DÉFINITION Rappel : données stockées dans des variables du système et permettent aux programmes d'avoir des informations sur son environnement Deux catégories : Les variables d'environnement relatives au client Les variables d'environnement relatives au serveur
DONNÉES DU FORMULAIRE HTTP_REQUEST_METHOD : Variable qui indique le type de méthode utilisée pour envoyer les données au programme CGI. Il s'agit de GET, HEAD, POST, PUT ou DELETE. Méthode GET : QUERY_STRING : Partie de l'url (ayant servi à accéder au script CGI) située après le point d'interrogation. Méthode POST : Les données présentes dans le corps de la requête sont accessibles via le fichier de flux d'entrée standard nommé STDIN
INFORMATIONS SUR LE SCRIPT ET LE SERVEUR SCRIPT_FILENAME : Chemin d'accès complet au script CGI SCRIPT_NAME : Chemin d'accès relatif (par rapport au chemin d'accès à la racine web) au script CGI SERVER_PORT : Port TCP auquel les données ont été envoyées (généralement le port 80) SERVER_PROTOCOL : Nom et version du protocole utilisé pour envoyer la requête au script CGI
EXEMPLE Récupération des variables d environnement par la fonction du langage (getenv en C) char *server_name; server_name = getenv("server_name");
INSTALLATION POUR WAMPSERVER Modification du fichier : <Directory "cgi-bin"> AllowOverride None Options Indexes FollowSymLinks ExecCGI Order allow,deny Allow from all </Directory> AddHandler cgi-script.cgi Copie des fichiers cgi uniquement dans le fichier cgi-bin de www