Formulaire d'une page Web
Numérique et sciences informatiques
Un formulaire HTML est indiqué par la balise <form>
et contient notamment des champs de saisie appelés
input
de différents types ou select
.
Les attributs value
seront des variables utilisées en JavaScript ou côté serveur.
Le mode de passage des paramètres par un formulaire est défini par l'attribut method de la balise <form> ci-dessous :
<form method="........" action="fichier.php">
ICI LES ELEMENTS DU FORMULAIRE
</form>
méthode : GET
Si l'attribut de method est absent ou que sa valeur est GET alors les paramètres du formulaire sont passés au serveur via l'URL, en suivant la syntaxe précédente :
protocole://nom_ou_adresse_IP:port/fichier.php?paramètre1 = valeur1&...¶mètreN=valeurN
L'intérêt de la méthode GET est que toute l'information nécessaire au serveur est contenue dans l'URL.
Au niveau sécurité, on peut avoir un vrai problème concernant les mots de passe qui seraient affichés en clair dans l'URL ! Ce qui est évidemment par recommandé !
méthode : POST
Si l'attribut de method est POST, alors les paramètres sont passés au serveur de manière différente. Le navigateur Web forme bien la chaîne de caractères paramètre1 = valeur1&...¶mètreN=valeurN. Cependant, il envoie un message HTTP commençant par POST. Les paramètres sont alors placés dans le corps de la requête HTTP.
Les paramètres transitent dans le corps de la requête HTTP.
Mais, il est important de bien comprendre que lorsqu'on soumet un mot de passe dans un formulaire, on doit IMPERATIVEMENT utiliser la méthode POST, mais ceci n'est pas SUFFISANT, car le mot de passe circulera en clair dans la requête HTTP (c'est vérifiable en analysant des trames TCP, avec des logiciels du type WireShark). Pour cela, il faudra chiffrer les échanges avec HTTPS, vu précédemment. Les navigateurs modernes nous alertent s'il y a un champ de type password SANS HTTPS.
Les formulaires
Balise FORM | |||||
---|---|---|---|---|---|
Balise | Attribut | Valeur | code (exemple) | Description | Affichage |
<form> | method | POST GET |
|
permet de préciser de quelle manière vont circuler les données C'est important pour la récupération et le traitement PHP. |
- |
action | traitement.php |
|
permet de préciser sur quelle page nous allons arriver après l'envoi du formulaire. | - | |
enctype | multipart/form-data |
|
permet de préciser le type mime utilisé. | - |
Balise LABEL | |||||
---|---|---|---|---|---|
Balise | Attribut | Valeur | code (exemple) | Description | Affichage |
<label> | for | exemple |
|
permet de préciser un nom identique à l'id d'une case de saisie <input> afin de les relier entre eux. | Pseudo : |
Balise INPUT | |||||
---|---|---|---|---|---|
<input> | name | exemple |
|
permet de créer une case de saisie ayant pour nom : nom1. | |
<input> | id | exemple |
|
permet de créer une case de saisie ayant pour id : exemple. Cela permet de faire la liaison avec l'attribut for d'un label. |
|
<input> | required | - |
|
permet de rendre la saisie sur le champ obligatoire. | |
<input> | maxlength | 10 |
|
permet de fixer la saisie à 10 caractères maximum. | |
<input> | readonly | - |
|
permet de rendre le champ lisible seulement, sans modification possible. | |
<input> | disabled | - |
|
permet de désactiver le champ. | |
<input> | list | exemple |
|
permet de faire la liaison avec une balise datalist ayant pour id : France. | |
<input> | pattern | [0-9]{5} |
|
expression régulière : 5 chiffres requis entre 0 et 9. | |
<input> | title | texte |
|
le title permet de personnaliser le message d'erreur dans une infobulle. | |
<input> | value | texte |
|
l'attribut value permet de saisir du texte dans le champ (ou dans un bouton submit). | |
<input> | placeholder | texte |
|
l'attribut placeholder permet de pré-saisir du texte. | |
<input> | type | text |
|
permet de créer une case de saisie. | |
<input> | type | password |
|
permet de créer une case de saisie avec saisie des caractères cryptés. | |
<input> | type |
|
permet de créer une case de saisie acceptant uniquement la saisie d'une adresse email. | ||
<input> | type | file |
|
permet de créer une case de saisie pour l'upload de fichiers. | |
<input> | type | checkbox |
|
permet de créer une case à cocher. | |
<input> | type | radio |
|
permet de créer une case à cocher unique. | |
<input> | type | date |
|
permet d'ouvrir un calendrier pour choisir une date. | |
<input> | type | range |
|
permet d'afficher une jauge. | |
<input> | type | tel |
|
permet d'afficher un clavier numérique sur les smartphones. | |
<input> | type | color |
|
permet d'afficher une palette de couleur. | |
<input> | type | hidden |
|
permet d'afficher un champ caché. | |
<input> | type | submit |
|
permet de valider un formulaire. | |
<input> | type | reset |
|
permet de réinitialiser le formulaire. |
Balise SELECT | |||||
---|---|---|---|---|---|
Balise | Attribut | Valeur | code (exemple) | Description | Affichage |
<select> | name | exemple |
|
SELECT permet d'afficher une liste déroulante | |
<select> | option | exemple |
|
La balise OPTION permet de proposer plusieurs choix à l'intérieur d'un SELECT | |
<select> | optgroup | exemple |
|
La balise OPTGROUP permet de classer les options avec l'aide d'une indication écrite | |
<select> | multiple | - |
|
L'attribut MULTIPLE permet d'effectuer plusieurs choix | |
<select> | selected | - |
|
L'attribut SELECTED permet de sélectionner une option par défaut. |
Balise TEXTAREA | |||||
---|---|---|---|---|---|
Balise | Attribut | Valeur | code (exemple) | Description | Affichage |
<textarea> | name | exemple |
|
La balise textarea permet d'afficher une zone de saisie | |
<textarea> | rows | 10 |
|
L'attribut rows de la balise textarea permet de régler la hauteur | |
<textarea> | cols | 10 |
|
L'attribut rows de la balise textarea permet de régler la largeur |
Entraînement 1:
A l'aide des informations ci-dessus, réaliser le visuel du formulaire suivant :
Entraînement 2:
Tester,modifier, améliorer et utiliser ce code pour réaliser un formulaire
<form name="QCM">
<fieldset>
<legend>Qui était le père de Luke ?</legend>
<input type="radio" name="choix" value="choix1"/>Anakin Skywalker<br>
<input type="radio" name="choix" value="choix2"/>Han Solo<br>
<input type="radio" name="choix" value="choix3"/>Jabba le Hutt<br>
</fieldset>
<fieldset>
<legend>Qui est la princesse Leia ?</legend>
<input type="radio" name="choix1" value="choix4"/>La sœur de Luke Skywalker<br>
<input type="radio" name="choix1" value="choix5"/>La filleule de Yoda<br>
<input type="radio" name="choix1" value="choix6"/>La femme d'Obi Wan Kenobi<br>
</fieldset>
<fieldset>
<legend>Les planètes de Star Wars sont :</legend>
<input type="checkbox" name="check1" value="choix7">Tatooine<br>
<input type="checkbox" name="check2" value="choix8">Naboo<br>
<input type="checkbox" name="check3" value="choix9">Sakaar<br>
<input type="checkbox" name="check4" value="choix10">Mustafar<br>
</fieldset>
<div id="resultat"></div>
<input type="button" value="Valider" onclick="tester(this.form)"/>
<br>
Votre score est : <span id="score"></span>
</form>
<script type="text/javascript">
// Fonction pour modifier le texte d'un élément HTML
function modifierText(id, texte) {
// Utilisation de innerText pour changer le contenu texte de l'élément avec l'ID spécifié
document.getElementById(id).innerText = texte;
}
// Fonction pour tester les réponses du formulaire
function tester(form) {
var toutEstOk = true;
var score = 0;
// Vérification de la première question
if (form.choix[0].checked) {
score++;
} else if (form.choix[1].checked || form.choix[2].checked) {
toutEstOk = false;
} else {
alert("Le QCM est mal rempli");
return false;
}
// Vérification de la deuxième question
if (form.choix1[0].checked) {
score++;
} else if (form.choix1[1].checked || form.choix1[2].checked) {
toutEstOk = false;
} else {
alert("Le QCM est mal rempli");
return false;
}
// Vérification des cases à cocher pour les planètes de Star Wars
if (form.check1.checked && form.check2.checked && !form.check3.checked && form.check4.checked) {
score++;
} else {
toutEstOk = false;
}
// Appel de la fonction pour afficher le score
modifierText("score", score);
// Affichage du message en fonction des résultats
if (toutEstOk) {
alert('Bravo ! Tout bon !');
} else {
alert('Aïe ! Il y a des erreurs...');
}
return false;
}
</script>
Savoir faire
- Analyser et modifier les méthodes exécutées lors d'un clic sur un bouton d'une page web.
- Reconnaître quand et pourquoi la transmission est chiffrée.
- Analyser le fonctionnement d'un formulaire simple.
- Distinguer les transmissions de paramètres par les requêtes POST et GET.
- Identifier les évènements.
- Distinguer ce qui est exécuté sur le serveur ou sur le client et dans quel ordre
Fiche de cours