Formulaires
Les divers composants de formulaires (version en tableau)
Informations cachées dans des formulaires
Quelques exemples
- exemple de formulaire pour recueillir des commentaires de lecteurs
- Analyse de réponse en texte libre:
- example original de jeu à base de formulaire
Notes
-
La marque <form> peut prendre un attribut
method qui peut prendre les valeurs GET
ou POST. La différence réside dans la façon
dont les informations du formulaire seront envoyée au serveur
mentionné dans l'attribut action.
-
avec la méthode GET, le butineur appond les informations
du formulaire à la suite de l'URL du script CGI indiquée par
l'attribut action, en séparant l'URL des informations
du formulaires par un '?', sous la forme:
http://Votre.Serveur.com/cgi-bin/VotreScript?ObjetDeFormulaire1=valeur1&...
Ces informations seront alors visibles dans le champs de la fenêtre du butineur qui sert à afficher l'URL du document courant, lorsque le serveur envoie la réponse au formulaire. Avantages: on peut sauver un signet ("bookmark") sur la réponse et donc réactiver plus tard le script avec les mêmes données, sans avoir à réutiliser le formulaire; on peut inclure un lien dans un document HTML, qui activera le script lorsque l'utilisateur utilisera le lien; le formulaire continuera à fonctionner correctement si le serveur retourne un "redirect" pour l'URL mentionnée dans l'attribut action. Désavantage: toutes les informations du formulaire sont donc visibles, y compris les champs cachés et l'URL peut être gigantesque s'il y a beaucoup de données dans le formulaire (p.ex. "file upload").
- avec la méthode POST, les données du formulaire sont envoyées au serveur (et donc au script CGI) séparément, à la suite de la requête au serveur. Avantages: convient bien à la transmission d'un grand volume de données; les informations transmises ne sont pas visibles. Désavantages: on ne peut pas sauver de signet ("bookmark") sur la réponse obtenue par l'utilisation du formulaire; il faut modifier l'URL de l'attribut action du formulaire si le script traitant les données du formulaire est déplacé (un "redirect" ne fonctionnera pas).
La différence est surtout importante pour la personne qui doit programmer le script CGI qui va recevoir les données du formulaire. Si vous utilisez un script déjà écrit, il vous faut déterminer la méthode que le script en question s'attend à voir utilisée.
-
avec la méthode GET, le butineur appond les informations
du formulaire à la suite de l'URL du script CGI indiquée par
l'attribut action, en séparant l'URL des informations
du formulaires par un '?', sous la forme:
- La plupart des éléments de formulaire peuvent comporter des attributs name="xxx" et value="yyy" qui seront utilisés lors de la transmission du contenu du formulaire au serveur mentionné par l'attribut action.
- Tout formulaire doit normalement comporter au moins un élément de type Submit. Si plusieurs boutons de type Submit sont utilisés dans le même formulaire, on peut les distinguer à l'aide de l'attribut Name="xxx" qui sera alors transmis dans la requête au serveur.
- Lors de la transmission du contenu des éléments du formulaire au serveur mentionné par l'attribut action, tous les espaces sont remplacés par des signes '+' et les caractères non alpha-numériques sont remplacés par la séquence %xx, où xx correspond à la représentation hexadécimale du code ASCII du caractère non alpha-numérique. Pour la valeur d'un champ de type TextArea, les retours à la ligne seront généralement encodés par %0a.
- En plus des éléments de formulaire, un formulaire peut contenir tout ce qu'un document HTML peut contenir, excepté un autre formulaire (on ne peut pas imbriquer des formulaires).
- Un document HTML peut contenir plusieurs formulaires. Dès que l'un des boutons Submit d'un des formulaires est appuyé, il y aura transmission du contenu du formulaire en question.
- L'attribut action mentionne généralement une URL correspondant à un programme cgi ou à une adresse de courrier électronique (mailto:user@host.domain). A noter que certains butineurs, tel Netscape, nécessitent l'utilisation de la méthode POST avec des URLs de type mailto:
Note: si vous voulez écrire un programme qui simule le comportement d'un formulaire (p.ex. pour activer automatiquement le script CGI correspondant) avec la méthode POST, il faudra inclure dans la requête un header "Content-length: n", où n indique le nombre de caractères de données qui sont envoyés dans la requête. Il faudra aussi séparer les headers des données avec une ligne vide. Exemple de ce qui doit être envoyé au serveur:
POST /cgi-bin/UnScript HTTP/1.0
Content-length: n
...données composées de n caractères...
- Logiciel URLcook pour Windows, permettant le décodage des informations de formulaires envoyés par courrier électronique.
- Mosaic for X version 2.0 Fill-Out Form Support (copie locale)
- Spécification des formulaires dans HTML 2.0
- Spécification des formulaires dans HTML 3.0 (obsolète)
- Spécification des formulaires dans HTML 3.2
- RFC 1867, Form-based File Upload in HTML
- Internet-Draft: Form-based Device Input in HTML (copie locale)