SELFHTML/Aides à la navigation CGI/Perl Introduction |
Formulaires HTML et CGI | |
Transmettre des données de formulaires avec GET ou POST |
|
L' Hypertext Transfer Protocol (HTTP) est le protocole de transmission avec lequel le navigateur Web et le serveur Web échangent des données. Pour cela existent des commandes HTTP. Deux commandes HTTP sont significatives dans le contexte de la transmission de données de formulaire:
GET
method="get"
dans le repère d'ouverture <form>
. Avec cette mention les données du formulaire rempli sont d'abord transmises au logiciel du serveur et sauvegardées par celui-ci dans une variable d'environnement déterminée nommée QUERY_STRING
. Un script CGI qui est appelé par la mention action=
dans le repère d'ouverture du formulaire doit lire le contenu de cette variable d'environnement pour accéder aux données du formulaire (voir aussi la partie sur les variables d'environnement CGI). En Perl c'est par exemple possible avec une instruction comme $form_donnees = $ENV{'QUERY_STRING'};
. Si un formulaire HTML utilise la méthode GET, le flux de données du formulaire est accroché, séparé par un point d'interrogation, directement derrière l'adresse URI de l'appel de programme CGI. Dans le navigateur Web de l'utilisateur, cela est visible dans la barre d'adresse URI après l'envoi du formulaire.POST
method="post"
dans le repère d'ouverture <form>
. La mention fait en sorte que les données du formulaire rempli soient transmises directement à l'adresse mentionnée avec action=
. Un script CGI qui est appelé par la mention action=
doit lire la saisie standard pour accéder aux données du formulaire. En Perl, c'est par exemple possible avec une instruction comme read(STDIN, my $Données, $ENV{CONTENT_LENGTH});
. Pensez en le faisant que le programme doit lire la variable d'environnement CONTENT_LENGTH
pour rechercher combien de signes doivent être lus de l'entrée standard. C'est indispensable, étant donné que le flux de données transmises ne comporte pas de signe de fin de données!Si vous voulez mettre en oeuvre un script CGI existant, vous devez savoir d'après laquelle des deux méthodes le script concerné attend les données. Normalement, ceci est documenté par l'auteur du script CGI. Certains scripts sont assez intelligents pour vérifier les deux possibilités: dans ce cas, peu importe la méthode de transmission que vous avez choisie dans le formulaire HTML. Si vous écrivez vos propres scripts, vous devez fixer la méthode de transmission ou bien également programmer de façon suffisamment intelligente pour que la méthode mentionnée dans le formulaire HTML soit sans importance.
Un formulaire HTML typique est constitué de champs nommés (par exemple pour le nom, l'adresse, et le texte de commentaire). Lors de la transmission d'un formulaire rempli à l'ordinateur serveur ou à un programme CGI, les données doivent être transmises de telle façon que le script CGI puisse reconnaître de quels champs de saisie le formulaire est constitué, et quelles données l'utilisateur a entrées dans quel champ. C'est pourquoi il existe une méthode de codage particulière qui sépare les champs de formulaire de leurs données. Cette méthode de codage utilise les règles suivantes:
&
).=
).+
).%
) suivi de la valeur hexadécimale du signe (par exemple le ç
français est remplacé dans le jeu de caractères ISO-8859-1 par %87
) .L'exemple suivant montre dans un premier temps le texte source HTML d'un formulaire HTML et au dessous une image de l'aspect du formulaire dans le navigateur Web avec les saisies de l'utilisateur. Sous l'image, vous voyez à quoi ressemble le flux de données d'un formulaire d'après les règles de codage et après que l'utilisateur ait envoyé le formulaire.
<form action="/cgi-bin/comments.pl" method="post"> <p>Name:<br> <input name="nom_utilisateur" size="40"></p> <p>E-Mail:<br> <input name="courriel_utilisateur" size="40"></p> <p>Text:<br> <textarea name="Texte" rows="5" cols="50"></textarea></p> <p><input type="submit" value="envoyer les données du formulaire"></p> </form> |
nomutilisateur=Stefan+M%FCnz&courriel_utilisateur=stefan.muenz@selfhtml.org&texte=ceci+est+un+petit+texte |
C'est ainsi que le navigateur Web code les données du formulaire lors de l'envoi du formulaire. Cette chaîne de caractères est transmise avec l'une des méthodes permises POST ou GET au script CGI appelé. Le script CGI peut, en connaissance des règles de codage, décortiquer ce flux de données pour le traiter par exemple champ par champ. Il y a une méthode plus élégante qui consiste à confier cela à un module Perl qui se chargera de ce travail - le module CGI.
Généralités sur les scripts Perl | |
Server Side Includes en HTML | |
SELFHTML/Aides à la navigation CGI/Perl Introduction |
© 2001 Stefan Münz / © 2003 Traduction Serge François, 13405@free.fr
selfhtml@fr.selfhtml.org