L'ÉTULISATION DE L'INTERFACE CGI DANS LES PROGRAMMATIONS DES WEB SERVEUR



1. Introduction

Le terme Perl est en fait un acronyme. Il vient de la compression du nom anglophone "Practical Extraction and Report Language", ecrit par Larry WALL. Perl est un langage de programmation oriente objet qui permet l'extraction et le traitement rapide d'informations. L'avantage du Perl est que le programme est un langage en script et non un code source a compiler ce qui permet de porter votre programme directement sur toutes les plates-formes supportees (Unix, Windows, Mac...) sans autre operation qu'une simple copie de fichier. Un script Perl est a la base interprete, mais cette periode d'interpretation n'est que passagere. En fait, il y avant chaque execution une compilation transparente pour l'utilisateur. L'executable est genere en memoire puis execute a partir de la. Ce qui augmente legerement le temps d'execution par rapport a un programme equivalent en C, mais c'est souvent bien plus rapide a ecrire, plus simple a maintenir et a porter... Ce petit tutorial s'adresse avant tout aux debutants, il a pour but de vous introduire aux bases du langage Perl, donc n'abordera pas toutes les specificites de ce langage... Il n'y a pas besoin d'avoir des connaissances en programmation pour commencer, mais des notions de programmation (surtout en shell Unix) sont des atouts... La Common Gateway Interface (CGI) est une norme definissant l'interfacage d'applications externes avec des serveurs d'information. Ici nous parlerons de l'interfacage avec un Serveur HTTP (Serveur Web)

2.Pourquoi utiliser les CGI ?

Lorsqu'un document HTML est envoye sur le Web, il s'agit d'un fichier texte statique dont l'information ne change pas tant que vous ne l'avez pas reedite. Grace au CGI, vous pouvez faire modifier cette page dynamiquement. Le CGI permet d'afficher un resultat dans la mesure ou ce programme est execute en temps reel, au moment ou le client fait une requete au serveur.

2.1.Prerequis et choix techniques

Dans ce document, je suppose connues les bases du langage HTML. Pour l'ecriture des programmes, la connaissance d'un langage de programmation plus ou moins evolue est bien entendu necessaire (par exemple, C, Perl). Nous supposons un serveur Web tournant sur une machine Linux, avec comme serveur HTTP Apache... CGI provides a portable and simple solution to these problems. The CGI protocol defines a standard way for programs to communicate with the Web server. Without much special knowledge, you can write a program in any computer language that interfaces and communicates with the Web server. This program will work with all Web servers that understand the CGI protocol. La communication de cgi est manipulee au-dessus de l'entree standard et le rendement, qui signifie que si vous savez imprimer et des donnees lues en utilisant votre langage de programmation, vous pouvez ecrire une application de web server. Autre qu'analyser l'entree et le rendement, programmant le cgi des applications est presque equivalent a programmer n'importe quelle autre application. Par exemple, si vous voulez programmer "bonjour, monde!" programme, vous employez les fonctions de l'impression de votre langue et le format defini pour des programmes de cgi pour imprimer le message approprie.

3.Choix de votre langue

puisque le cgi est "une interface commune," vous n'etes limites a aucun langage de programmation specifique. Est une question importante que beaucoup de gens demandent ce que les langages de programmation peuvent vous employer pour programmer le cgi? Vous pouvez vous servir de n'importe quel langage qui peut faire ce qui suit: . Copie au rendement standard. Lu de l'entree standard. Lu des variables d'environnement presque tous les langages de programmation et beaucoup de langues scripting executez ces trois activites, et vous pouvez employer n'importe quel un d'elles. Les langues tombent au-dessous de un des deux classes suivantes: compile ou interprete. Un langue-tel compile comme C ou C++-tends a etre plus petit et plus rapide, tandis que langue-tel interprete comme Perl ou Rexx-exige charger un interprete parfois grand sur le demarrage. En plus, vous pouvez distribuer des binaries (code compile dans le langage machine) sans code source si votre langue est compilee. La distribution des manuscrits interpretes signifie normalement distribuer le code source. Avant que vous choisissiez votre langue, vous devez d'abord considerer vos priorites. Vous devez equilibrer les gains de vitesse et d'efficacite d'un langage de programmation contre la facilite de la programmation dans des autres. Si vous pensez vous voulez apprendre une autre langue plutot qu'employez un que vous connaissez deja, pesez soigneusement les avantages et les inconvenients des deux langues. Peut-etre les deux langues le plus generalement utilisees pour la programmation de cgi sont C et Perl (dont tous les deux sont couverts en ce livre). Tous les deux ont leurs propres avantages et inconvenients distincts. Le Perl est une langue tres a niveau eleve pourtant puissante particulierement utile pour analyser le texte. Bien que sa facilite d'utilisation, flexibilite, et puissance lui fassent une langue attrayante pour le cgi programmant, sa taille relativement grande et execution plus lente le rend parfois peu convenable pour certaines applications. Les programmes C Sont plus petits, plus efficaces, et offrent un controle plus de bas niveau du systeme, mais sont plus difficiles a programmer, n'ont pas des routines integrees faciles de traitement de textes, et sont plus difficiles a corriger. Quelle langue est le langage de programmation superieur de cgi? N'importe quelle langue vous etes la programmation la plus confortable. Tous les deux sont justes comme efficaces pour programmer des applications de cgi, et avec les bibliotheques appropriees, tous les deux ont les possibilites semblables. Cependant, si vous avez un serveur fortement consulte, vous pourriez vouloir employer de plus petits programmes C Compiles. Si vous devez ecrire rapidement une application qui exige beaucoup de traitement de textes, vous pourriez vouloir employer le Perl a la place.

4.Les avertissements

la sont quelques solutions de rechange importantes aux applications de cgi. Beaucoup de serveurs incluent maintenant un api de programmation qui des marques il plus facile de programmer des prolongements directs au serveur par opposition aux applications separees de cgi. Le serveur APIs tendent a etre plus efficace que des programmes de cgi. D'autres serveurs incluent la fonctionnalite integree qui peut manipuler usages speciaux sans cgi tel que l'interface de base de donnees. En conclusion, quelques applications peuvent etre manipulees par certaines nouvelles technologies de client-cote (plutot que serveur-cote) telles que Java. Avec un tel changement rapide de technologie, le cgi devient-il rapidement desuet? Probablement pas. Le cgi a plusieurs avantages par rapport aux technologies plus nouvelles. . C'est "terrain communal," ou portatif. Vous pouvez ecrire une application de cgi en utilisant presque n'importe quel langage de programmation sur n'importe quelle plateforme. Certaines des solutions de rechange telles que le serveur APIs vous limitent a certaines langues et sont beaucoup plus difficiles a apprendre. . les technologies de Client-cote telles que Java ne sont pas susceptibles de remplacer le cgi parce qu'il y a certaines applications aux lesquelles des applications de serveur-cote bien mieux sont convenu pour executer. . Plusieurs des limitations du cgi sont des limitations de HTML ou de HTTP. Comme normes pour l'enchainement en general evoluez, faites ainsi les possibilites du cgi.

5.Le sommaire

L'interface de passerelle commune est le protocole par lequel les programmes agissent l'un sur l'autre avec des serveurs d'enchainement. La polyvalence du cgi donne a des programmeurs l'occasion d'ecrire des programmes de passage en presque n'importe quelle langue, bien qu'il y ait beaucoup de compensations liees a differentes langues. Sans ces capacites, la fabrication des pages interactives d'enchainement serait difficile au mieux, exigeant des modifications au serveur et mettant l'interactivite hors de l'extension de la plupart des programmeurs qui ne sont pas egalement des administrateurs d'emplacement.

6.L'analyse du rendement dans le Perl

capturant et analysant le rendement des programmes dans le Perl est egalement plus simple qu'en maniere la plus facile de C. The de stocker le rendement d'un programme de Perl est de l'appeler employant en arriere fait tic tac (`). des frais de Perl une coquille et execute la commande dans les coutils arrieres, renvoyant le rendement de la commande. Par exemple, les frais suivants une coquille, courses/bin/ls, et magasins le rendement dans la grandeur scalaire $files: $files = `/bin/ls`; Vous pouvez alors l'analyser $files ou simplement imprimer au stdout. Vous pouvez egalement utiliser des pipes dans le Perl en utilisant la fonction d'open(). Si vous voulez siffler le rendement d'une commande (par exemple, LS) a une poignee de dossier, vous emploieriez ce qui suit: open(OUTPUT, "ls|"); De meme, vous pourriez siffler des donnees dans un programme en utilisant ce qui suit: open(PROGRAM, "|sort"); Cette syntaxe est equivalente a la fonction du popen() du c et souffre des problemes semblables. Afin de lire d'une pipe sans ouvrir une coquille, employez l'open(OUTPUT, "d'exec de || d'" -|")/bin/ls"; Pour ecrire dans une pipe, employez l'open(PROGRAM, "| -")" d'exec de ||/usr/bin/sort "; S'assurent chaque argument pour le programme obtient passe comme argument separe a l'exec(). A l'unbuffer une poignee de dossier dans le Perl, emploient le select(FILEHANDLE); $ | = 1; Par exemple, a l'unbuffer le stdout, vous feriez ce qui suit: select(stdout); $ | = 1;

7.L'utilisation des bibliotheques de programmes pour coder le cgi

de codage de rendement de cgi produit implique souvent d'imprimer les etiquettes et le texte de HTML. Ceci peut etre un processus reitere qui peut etre simplifie en ecrivant des fonctions d'emballage. Par exemple, l'en-tete de presque tous les documents de HTML se composera d'une etiquette de < HTML >, etiquettes d'etiquettes, les d'< titre > d'< tete >, et peut-etre l'etiquette d'< corps > d'ouverture. En C, l'impression de l'en-tete d'un document de HTML pourrait ressembler a ceci: printf(" < head>\n"); les printf("\n"); printf(" < body>\n"); Au lieu d'employer plusieurs appels de printf() pour imprimer les en-tetes, vous pourriez creer une fonction d'en-tete comme ce qui suit: html_header(char vide * titre) { printf(" < head>\n"); printf("\n", title); printf(" < body>\n"); } maintenant, chaque fois que vous devez produire un dossier de HTML, vous pouvez commencer par la fonction suivante plutot que plusieurs rapports de printf(): les html_header("This est le titre"); Beaucoup de bibliotheques de programmes de cgi creent de telles fonctions d'emballage que vous pourriez ou ne pourriez pas vouloir pour employer. Par exemple, le paquet de cgi-lib.pl declare les fonctions de rendement dans le tableau 5.1.

Tableau 5.1. Fonctions d'emballage de rendement dans cgi-lib.pl.

Function Description
PrintHeader Prints Content-Type: text/html\n\n header.
HtmlTop($title) Prints , , and opening tags. Also prints $title surrounded by $title tags. M
HtmlBot Prints the closing and tags.

Tableau 5.2. Fonctions d'emballage de rendement dans cgihtml.

Function Description
void html_header() Prints a Content-Type: text/html\r\n\r\n header.
void mime_header(char *mime) Prints a Content-Type header with MIME type mime.
void nph_header(char *status) Prints an No-Parse header with status code and message status.
void show_html_page(char *loc) Prints a Location header with location loc.
void status(char *status) Prints a Status header with status code and a message defined by status.
void pragma(char *msg) Sends a Pragma header with directive msg.
void html_begin(char *title) An HTML header wrapper function. Equivalent to cgi-lib.pl HtmlTop.
void html_end() Complement to html_begin(). Prints the closing and tags.
void h1(char *str) .. void h6(char *str) Wrapper for headline tags h1 through h6. Surrounds str by the appropriate tags.
void hidden(char *name, char *value) Defines a hidden input type with name name and value value. Useful for maintaining state.


MON ENCADREUR :

MALDAVANOV A.V