# Formulaire d'une page Web <br><br> *Ce document a été créé en collaboration avec ChatGPT, qui a été utilisé pour transposer le cours correspondant (accessible [ici](formulaires)) en un diaporama. Pour voir la conversation [cliquez ici](https://chat.openai.com/share/31dfa665-8daf-449b-9b6c-e3a246440a33).* --- ## Introduction - Un **formulaire** sur une page Web permet à l'utilisateur de transmettre des données au serveur. - Les données peuvent être utilisées pour construire une page Web, enregistrer des informations dans une base de données, etc. - Utilisation de la balise `form` en HTML pour créer un formulaire. ```html <form action="" method=""> <!-- Éléments du formulaire --> </form> ``` --- # Éléments de formulaire - Différents types d'éléments : texte, mot de passe, email, radio, liste d'options, zone de texte, etc. - Association de libellés (`label`) avec des éléments pour une meilleure accessibilité. - Le formulaire se termine par un bouton pour envoyer les données au serveur ---- ### Exemple ```html <form action="" method=""> <p> <label for="nom">Nom : </label> <input type="text" name="nom" id="nom"> </p> <p> <label for="mdp">Mot de passe : </label> <input type="password" name="mdp" id="mdp"> </p> <!-- Choix dans une liste d'options avec la balise <select> --> <label for="moyen-transport">Moyen de transport : </label> <select name="transport" id="moyen-transport"> <option value="bus">Bus</option> <option value="voiture">Voiture</option> <option value="velo">Vélo</option> <option value="autre">Autre</option> </select> <!-- Autres champs du formulaire... --> <p> <input type="submit" value="Envoyer le formulaire"> </p> </form> ``` - Les valeurs des attributs `name` des champs du formulaire seront importants pour récupérer côté serveur les données saisies côté client --- # Transmission des données au serveur - Les données d'un formulaire sont envoyées au serveur lorsqu'on clique sur le bouton d'envoi. - Utilisation des attributs `action` et `method` dans la balise `form`. - `action` : URL où les données du formulaire doivent être envoyées. - `method` : Définit la méthode HTTP (GET ou POST, etc.) pour envoyer les données. ```html [1,4] <form action="/ma-page-de-traitement" method="xxx"> <!-- Éléments du formulaire --> <p> <input type="submit" value="Envoyer le formulaire"> </p> </form> ``` ---- ### Deux méthodes principales - Méthode `GET` : données transmises via l'URL. - Méthode `POST` : données transmises dans le corps de la requête. --- # Méthode GET - Transmission des données via l'URL. - Adaptée aux données non confidentielles. - Limite de taille d'URL à prendre en compte. - Requête GET envoyée au serveur de la forme : ```http GET /ma-page-de-traitement?nom=prof&mdp=1234&email=&choix-chocolat=2&transport=velo&commentaire= HTTP/1.1 ... puis toutes les en-têtes ... ``` ---- **Exemple d'utilisation :** Recherche sur un site avec des paramètres visibles dans l'URL. **Code HTML :** ```html <form action="/recherche" method="GET"> <label for="query">Recherche : </label> <input type="text" name="query" id="query"> <input type="submit" value="Rechercher"> </form> ``` ---- **Avantages :** - Facilité de partage d'URL (exemple : https://www.qwant.com/?l=fr&sr=fr&r=FR&q=informatique&t=web) **Inconvénients :** - Limitation de la taille des données. - Non adapté aux données sensibles. --- # Méthode POST - Transmission des données dans le corps de la requête. - Adaptée aux données confidentielles. - **Attention** : à combiner avec le protocole HTTPS pour transmission sécurisée (chiffrée) - Requête POST envoyée au serveur de la forme : ```http POST /ma-page-de-traitement HTTP/1.1 ... puis toutes les en-têtes ... [ ligne vide ] nom=prof&mdp=1234&email=&choix-chocolat=2&transport=velo&commentaire= ``` ---- **Exemple d'utilisation :** Soumission d'un formulaire de connexion avec des informations sensibles. **Code HTML :** ```html <form action="/connexion" method="POST"> <label for="username">Nom d'utilisateur : </label> <input type="text" name="username" id="username"> <label for="password">Mot de passe : </label> <input type="password" name="password" id="password"> <input type="submit" value="Se connecter"> </form> ``` ---- **Avantages :** - Adapté aux données sensibles. - Pas de limitation de taille d'URL. **Inconvénients :** - Pas sécurisé pour autant (à combiner avec HTTPS pour chiffrer les données) - Empêche le partage des données via l'URL (lorsque les informations ne sont pas sensibles) --- # Traitement côté serveur - Le serveur peut récupérer et exploiter les données d'un formulaire. ---- ### ✏️ Activité Pour voir comment un serveur peut récupérer et traiter les données d'un formulaire : Faites l'activité : [Traitement des données d'un formulaire avec Flask](activite-traitement-formulaire)) --- # Bilan - Un formulaire est un élément HTML créé avec la balise `<form>` - Formulaires essentiels pour les applications Web. - Méthodes GET et POST adaptées à différents besoins. - Sécurisation des données avec HTTPS pour POST. - Serveur peut récupérer les données et les traiter. --- # Références - Manuel *Numérique et Sciences Informatiques*, T. BALABONSKI, S. CONCHON, J.-C. FILLIATRE, K. NGUYEN, Ellipses. - Cours de Gilles Lassus : [https://glassus.github.io/premiere_nsi/T6_IHM_Web/6.3_Get_Post_Formulaires/cours/](https://glassus.github.io/premiere_nsi/T6_IHM_Web/6.3_Get_Post_Formulaires/cours/) - OpenClassrooms *Concevez votre site Web avec PHP et MySQL* : [https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/4237646-decouvrez-le-fonctionnement-dun-site-ecrit-en-php](https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/4237646-decouvrez-le-fonctionnement-dun-site-ecrit-en-php). --- *Germain BECKER & Sébastien POINT, Lycée Emmanuel Mounier, ANGERS* ![Licence Creative Commons](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) ---