Les formulaires

Interactions hommes - machines (IHM)

python

Sur de nombreuses pages web, des formulaires sont utilisés que ce soit pour une authentification par identifiant et mot de passe ou pour une recherche d’informations.
Le formulaire est un élément codé en HTML :

<form method="get" action="action.php">
 <label for="ident">Votre identifiant</label> :
<input type="text" name="identifiant" id="ident"/>
<input type="submit" value="Envoyer" />
</form>

Un formulaire se trouve contenu dans <form [...] /form>. Dans la balise <form>, on ajoute la méthode HTTP utilisée (ici GET) et le lien qui sera activé lors de l’envoi du formulaire (action ↪.php).
Ensuite, grâce à <input[...] />, on crée deux objets :

  • un champ de texte (ligne 3)
  • et un bouton pour valider le formulaire (ligne 4).

Le champ de texte est précédé d’un label référencé par ident. Cette référence est utilisée dans input avec id afin qu’un clic sur ”Votre identifiant” place le curseur dans le champ de texte correspondant. identifiant est une ”variable” qui recevra le texte entré dans le champ et qui sera transmise à action.php.

GET ou POST

Lors de l’utilisation de la méthode GET dans un formulaire, les données sont transmises en clair dans la barre d’adresse du navigateur. Dans les faits, on obtient action.php?identifiant=<texte entré>.
Cela pose des problèmes de sécurité. En effet, au lieu du type "text", on peut utiliser le type "password". Lors de l’entrée du mot de passe, les lettres sont remplacées par des points. Mais lors de l’envoi des données, le mot de passe apparaît en toutes lettres dans la barre d’adresse !
La méthode POST transmet les données dans le corps de la requête : les données sont donc moins visibles.

Gestion des données

Pour gérer les données provenant du formulaire, on utilise un script php action.php. Le code le plus simple possible est le suivant :

<html>
<body>
<?php
echo $_POST['identifiant'];
 ?>
</body>
</html>

On suppose que la méthode utilisée dans l’envoi du formulaire est POST. Grâce à PHP, on peut alors récupérer le texte et l’afficher.
PHP est un langage de script executé au niveau du serveur. Celui-ci doit évidemment accepter de gérer le PHP. Pour tester le formulaire et le script en local, on peut installer WAMP sous Windows, MAMP sous Mac OS X ou LAMP sous Linux. AMP est l’acronyme de Apache (serveur web), MySQL (gestionnaire de base de données), PHP.

Sécurité

HTTP transmet le texte brut. Pour que les données soient transmises de manière sécurisée, on utilise HTTPS. Lorsque la communication avec un site WEB est sécurisée, la barre d’adresse commence par un cadenas.
HTTPS est une association de HTTP et de SSL.
SSL (Secure Socket Layer) vient en complément de TCP/IP. Ses avantages sont :

  • la confidentialité : on ne peut espionner les données. La connexion est chiffrée.
  • l’intégrité des données : on ne peut les modifier.
  • l’authentification : on est sûr de l’identité du client et du serveur grâce à des certificats présents dans le navigateur, fournis par des sociétés tierces à qui on fait implicitement confiance.

L’évolution récente de SSL est TLS (Transport Layer Security) qui accompagne la version 2 de HTTP.

De plus en plus de sites WEB basculent en HTTPS sous la pression des navigateurs internet. En effet, au lieu d’indiquer simplement qu’un site en HTTPS est sécurisé avec le fameux cadenas, les navigateurs indiquent que les sites HTTP ne sont pas sécurisés. Il faut bien se rappeler que seule la communication est sécurisée : rien ne nous assure que les données confidentielles fournies au site sont elles-mêmes protégées sur le serveur.