Maths & NSI

Première

Interactions entre l'homme et la machine sur le Web

Une page Web moderne n'est pas un simple document figé : elle réagit aux actions de l'utilisateur (clics, survols, saisies) et communique avec un serveur distant. Ce chapitre étudie les événements et le JavaScript qui rendent une page interactive, puis le modèle client-serveur et le protocole HTTP qui permettent à un navigateur et à un serveur Web d'échanger des données, notamment via les formulaires.

Événements et interactions JavaScript dans une page Web

Les composants graphiques d'une page Web

Une page HTML propose différents éléments permettant à l'utilisateur d'interagir :

  • les liens hypertextes (<a href="...">) ;
  • les boutons (<button>) ;
  • les champs de texte (<input type="text">) et mots de passe (<input type="password">) ;
  • les cases à cocher (<input type="checkbox">) et boutons radio (<input type="radio">) ;
  • les listes déroulantes (<select> / <option>).

Ces éléments sont regroupés dans un formulaire (<form>) lorsqu'ils sont destinés à être transmis au serveur (voir la notion suivante).

Les événements

Un événement est une action détectée par le navigateur : un clic de souris, un passage du curseur au-dessus d'un élément, une saisie au clavier, la soumission d'un formulaire, etc.

ÉvénementSe déclenche quand...
onclickl'utilisateur clique sur l'élément
onmouseoverle curseur entre dans l'élément
onmouseoutle curseur quitte l'élément
onchangela valeur d'un champ est modifiée
onsubmitun formulaire est soumis

Associer un événement à une fonction JavaScript

On associe un événement à du code JavaScript en donnant, comme valeur de l'attribut d'événement, le nom d'une fonction à exécuter.

<button onclick="maFonction()">Cliquer ici</button>
function maFonction() {
    alert("Le bouton a été cliqué !");
}

Important. Le code de maFonction() n'est exécuté qu'au moment du clic, pas au chargement de la page : c'est la différence entre écrire une instruction directement dans le fichier JavaScript (exécutée dès le chargement) et l'écrire à l'intérieur d'une fonction associée à un événement (exécutée seulement quand l'événement se produit).

Modifier une page depuis JavaScript

JavaScript permet de retrouver un élément HTML grâce à document.querySelector, puis de le modifier :

document.querySelector("#monPara").style.color = "red";        // change le style
document.querySelector("#monPara").classList.add("actif");      // ajoute une classe CSS
document.querySelector("#monPara").classList.remove("actif");   // retire une classe CSS
document.querySelector("#monPara").innerHTML = "Nouveau texte"; // change le contenu

Exemple complet.

<p id="monPara">Survolez ou cliquez sur les boutons</p>
<button onclick="document.querySelector('#monPara').style.color='red'">Rouge</button>
<button onclick="document.querySelector('#monPara').style.color='green'">Vert</button>

Chaque bouton déclenche, au clic, une instruction JavaScript qui modifie la couleur du texte du paragraphe d'identifiant monPara.

Exercice — Analyser un clic sur un bouton

On donne l'extrait de page Web suivant :

<p id="message">Bonjour !</p>
<button onclick="changerTexte()">Cliquer</button>
function changerTexte() {
    document.querySelector("#message").innerHTML = "Vous avez cliqué sur le bouton !";
}
  1. Quel événement déclenche l'exécution de la fonction changerTexte ?
  2. Qu'affiche le paragraphe avant tout clic ? Et juste après un clic sur le bouton ?
  3. Modifier le code JavaScript pour qu'en plus de changer le texte, le clic change également la couleur du texte du paragraphe en bleu.
Exercice — Un formulaire avec plusieurs événements

On donne l'extrait de page suivant, qui combine un menu déroulant et une zone de texte :

<select id="theme" onchange="changerTheme()">
    <option value="clair">Thème clair</option>
    <option value="sombre">Thème sombre</option>
</select>
<p id="zone" onmouseover="survol()" onmouseout="finSurvol()">Survolez-moi</p>
function changerTheme() {
    var choix = document.querySelector("#theme").value;
    if (choix === "sombre") {
        document.querySelector("#zone").style.backgroundColor = "black";
        document.querySelector("#zone").style.color = "white";
    } else {
        document.querySelector("#zone").style.backgroundColor = "white";
        document.querySelector("#zone").style.color = "black";
    }
}
 
function survol() {
    document.querySelector("#zone").style.fontWeight = "bold";
}
 
function finSurvol() {
    document.querySelector("#zone").style.fontWeight = "normal";
}
  1. Combien d'événements différents sont utilisés dans cet extrait ? Les nommer, et préciser pour chacun l'élément HTML concerné et la fonction JavaScript associée.
  2. L'utilisateur sélectionne "Thème sombre" dans le menu déroulant. Que deviennent la couleur de fond et la couleur du texte de la zone #zone ?
  3. Sans changer de thème, l'utilisateur déplace ensuite la souris au-dessus du paragraphe #zone, puis la retire. Décrire, dans l'ordre, les deux fonctions exécutées et leur effet sur le style du texte.
  4. Le menu déroulant affiche "Thème clair" au chargement de la page. La fonction changerTheme s'exécute-t-elle à ce moment-là ? Justifier.
Exercice — Corriger un bug dans un gestionnaire d'événement

On donne l'extrait de page suivant :

<p id="info">Informations masquées</p>
<button onclick="afficher()">Afficher</button>
<button onclick="masquer()">Masquer</button>
function afficher() {
    document.querySelector("#information").style.display = "block";
}
 
function masquer() {
    document.querySelector("#info").style.display = "none";
}
  1. L'utilisateur clique sur le bouton "Afficher". Que renvoie document.querySelector("#information"), sachant qu'aucun élément de la page ne porte cet identifiant ?
  2. En déduire ce qui se passe réellement lorsqu'on essaie d'exécuter la suite de l'instruction .style.display = "block" sur cette valeur.
  3. Identifier précisément la ligne fautive du code JavaScript et expliquer l'erreur.
  4. Corriger le code JavaScript pour que le bouton "Afficher" fonctionne correctement.
  5. Le bouton "Masquer" fonctionne-t-il correctement ? Justifier en comparant l'identifiant utilisé dans le HTML et celui utilisé dans le JavaScript.
Exercice — Un compteur de clics : variable globale et innerHTML

On considère la page suivante.

<p>Nombre de clics : <span id="compteur">0</span></p>
<button onclick="incrementer()">+1</button>
<button onclick="remettreAZero()">Remise à zéro</button>
let n = 0;
 
function incrementer() {
    n = n + 1;
    document.querySelector("#compteur").innerHTML = n;
}
 
function remettreAZero() {
    n = 0;
    document.querySelector("#compteur").innerHTML = n;
}
  1. Qu'affiche le paragraphe au chargement de la page ? Puis après trois clics sur « +1 », un clic sur « Remise à zéro » et deux nouveaux clics sur « +1 » ?
  2. Un élève déplace la ligne let n = 0; à l'intérieur de la fonction incrementer, juste avant n = n + 1;. Que constate-t-il en cliquant plusieurs fois sur « +1 » ? Expliquer.
  3. Ajouter un bouton « −1 » et la fonction associée, sans que le compteur puisse devenir négatif.
  4. L'utilisateur clique dix fois, puis recharge la page. Que devient le compteur ? Le serveur a-t-il été informé des clics ?
Exercice — Vérifier un formulaire avant l'envoi avec onsubmit

Voici le formulaire d'inscription d'un club, accompagné d'un script.

<form action="inscription.php" method="post" onsubmit="return verifier()">
    <label>Pseudo</label> : <input type="text" id="pseudo" name="pseudo" />
    <label>Mot de passe</label> : <input type="password" id="mdp" name="mdp" />
    <input type="submit" value="S'inscrire" />
</form>
<p id="erreur"></p>
function verifier() {
    let mdp = document.querySelector("#mdp").value;
    if (mdp.length < 8) {
        document.querySelector("#erreur").innerHTML =
            "Mot de passe trop court (8 caractères minimum).";
        return false;
    }
    return true;
}
  1. L'utilisateur saisit le mot de passe soleil et clique sur « S'inscrire ». Que se passe-t-il ? Même question avec soleil2026.
  2. Pourquoi lit-on le mot de passe avec .value et non avec .innerHTML ?
  3. Compléter la fonction pour refuser aussi un pseudo vide, avec un message adapté.
  4. Le programme inscription.php, sur le serveur, doit-il encore vérifier la longueur du mot de passe ? Justifier.

QCM — Événements et JavaScript

1. Quel attribut HTML permet d'exécuter une fonction JavaScript lorsqu'un utilisateur clique sur un élément ?
2. Quelle instruction JavaScript sélectionne l'élément HTML ayant l'identifiant titre ?
3. À quel moment le code contenu dans une fonction associée à onclick est-il exécuté ?
4. Quel événement se déclenche quand le curseur de la souris entre dans un élément ?
5. Quelle expression JavaScript donne le texte saisi par l'utilisateur dans le champ <input id="ville"> ?

Client, serveur, HTTP et formulaires

Le modèle client-serveur

Sur le Web, deux ordinateurs communiquent selon des rôles différents :

  • le client (votre navigateur) demande des ressources ;
  • le serveur fournit ces ressources (pages HTML, images, fichiers CSS ou JavaScript...) à tous les clients qui les demandent.

Visiter une page Web déclenche un échange client-serveur : le client demande le fichier HTML, puis les ressources qu'il référence (images, CSS, JavaScript).

Le protocole HTTP

HTTP (HyperText Transfer Protocol) est l'ensemble des règles qui permettent au client d'envoyer une requête au serveur et au serveur de renvoyer une réponse.

Une requête HTTP contient notamment :

  • une méthode (l'action demandée) ;
  • l'URL de la ressource demandée ;
  • la version du protocole utilisé.

Une réponse HTTP contient notamment :

  • un code de statut (200 : la ressource a été trouvée, 404 : la ressource est introuvable...) ;
  • le corps de la réponse (par exemple le code HTML de la page).

Les principales méthodes HTTP :

MéthodeRôle
GETdemander une ressource, sans effet sur le serveur
POSTsoumettre des données au serveur pour traitement

Exécution côté client, exécution côté serveur

Il est essentiel de distinguer ce qui s'exécute où, et dans quel ordre :

  1. le client (navigateur) envoie une requête HTTP au serveur ;
  2. le serveur exécute, si besoin, un programme (en Python, PHP...) qui génère la page HTML à renvoyer ; c'est l'exécution côté serveur ;
  3. le serveur envoie sa réponse (le code HTML, éventuellement du CSS et du JavaScript) ;
  4. le navigateur reçoit cette réponse, l'affiche, puis exécute le JavaScript qu'elle contient ; c'est l'exécution côté client.

Le code HTML, CSS et JavaScript reçu par le navigateur s'exécute donc toujours après le serveur, et côté client (dans le navigateur, pas sur le serveur).

Des données mémorisées côté client : les cookies

Le protocole HTTP est, à la base, sans état : le serveur ne se souvient pas d'une requête à l'autre. Pour pallier cela, le serveur peut demander au navigateur de mémoriser une petite information, appelée cookie. À chaque nouvelle requête vers ce même serveur, le navigateur retransmet automatiquement ce cookie, ce qui permet par exemple de garder un utilisateur connecté d'une page à l'autre.

HTTP et HTTPS : la transmission chiffrée

Le HTTPS est la version sécurisée du protocole HTTP : les données échangées entre le client et le serveur sont chiffrées, et donc illisibles pour un tiers qui intercepterait la communication. On reconnaît une connexion HTTPS au préfixe https:// dans la barre d'adresse (souvent accompagné d'un cadenas). Il faut toujours vérifier la présence du HTTPS avant de transmettre des données sensibles (mot de passe, coordonnées bancaires...).

Le formulaire d'une page Web

Un formulaire HTML permet à l'utilisateur de saisir des données et de les envoyer au serveur. Il est délimité par la balise <form>, qui possède deux attributs essentiels :

  • action : l'URL vers laquelle la requête sera envoyée ;
  • method : la méthode HTTP utilisée (get ou post).
<form action="traitement.php" method="post">
    <label>Nom</label> : <input type="text" name="nom" />
    <label>Mot de passe</label> : <input type="password" name="mdp" />
    <input type="submit" value="Envoyer" />
</form>

GET ou POST ?

Méthode GETMéthode POST
Emplacement des donnéesdans l'URL (?nom=Martin&...)dans le corps de la requête
Visibilitévisibles, modifiables dans la barre d'adressenon visibles directement
Usage recommandérecherche, filtrage (données non sensibles)envoi de données sensibles ou modifiant le serveur

À noter. La méthode POST cache les données de l'URL, mais ne les chiffre pas : sans HTTPS, elles restent lisibles par quiconque intercepte la requête.

Exercice — Comparer GET et POST

On donne deux versions d'un même formulaire de connexion :

<!-- Version A -->
<form action="connexion.php" method="get">
    <input type="text" name="identifiant" />
    <input type="password" name="motdepasse" />
    <input type="submit" value="Se connecter" />
</form>
 
<!-- Version B -->
<form action="connexion.php" method="post">
    <input type="text" name="identifiant" />
    <input type="password" name="motdepasse" />
    <input type="submit" value="Se connecter" />
</form>
  1. Pour la version A, à quoi ressemblerait l'URL affichée après validation du formulaire, si l'utilisateur saisit sophie comme identifiant et azerty comme mot de passe ?
  2. Laquelle des deux versions faut-il utiliser pour ce formulaire de connexion ? Justifier.
  3. Le formulaire choisi en question 2 garantit-il, à lui seul, que le mot de passe est protégé contre une interception ? Justifier.
Exercice — Remettre dans l'ordre une communication client-serveur

Un internaute saisit dans son navigateur l'adresse d'un site marchand et consulte la fiche d'un produit. Voici, dans le désordre, quatre étapes de cet échange :

A. Le navigateur affiche la page HTML reçue. B. Le serveur génère dynamiquement le code HTML de la fiche produit. C. Le navigateur envoie une requête HTTP au serveur avec l'URL de la fiche produit. D. Le serveur envoie sa réponse HTTP contenant le code HTML généré.

  1. Remettre ces quatre étapes dans l'ordre chronologique correct.
  2. Préciser, pour chacune des étapes B et A, si elle s'exécute côté client ou côté serveur.
Exercice — Lire une URL et les paramètres d'un formulaire GET

Après une recherche sur un site de réservation, la barre d'adresse affiche :

https://www.example.com/recherche/hotels.php?ville=Rabat&nuits=3&budget=800
  1. Identifier dans cette URL : le protocole, le nom de domaine du serveur, le chemin de la ressource demandée, et les paramètres transmis avec leurs valeurs.
  2. La page de recherche contient le formulaire suivant.
<form action="/recherche/hotels.php" method="get">
    <input type="text" name="ville" />
    <input type="number" name="nuits" />
    <input type="submit" value="Chercher" />
</form>

L'utilisateur saisit Fès et 2. Quelle URL le navigateur demande-t-il ? On rappelle que les caractères non autorisés dans une URL sont encodés : l'espace devient +, et une lettre accentuée est remplacée par les octets de son codage UTF-8, écrits en hexadécimal et précédés de % (« è » se code C3 A8 en UTF-8).

  1. Que deviendrait cette URL si le formulaire utilisait method="post" ?
  2. Un utilisateur remplace à la main budget=800 par budget=-5 dans la barre d'adresse et valide. Que montre cette expérience ? Quelle conséquence pour le programme hotels.php ?
Exercice — Codes de statut et chronologie des requêtes d'une page

L'outil « Réseau » d'un navigateur a enregistré les requêtes suivantes pendant la visite d'une page du site d'un club, puis l'envoi de son formulaire d'inscription.

N°MéthodeRessource demandéeCode de statut
1GET/club/index.html200
2GET/club/style.css200
3GET/club/logo.png404
4GET/club/script.js200
5GET/club/photos/equipe.jpg200
6POST/club/inscription.php500
  1. Combien de requêtes le navigateur a-t-il émises pour afficher la page ? Pourquoi la requête n° 1 est-elle nécessairement la première ?
  2. Que signifient les codes 200, 404 et 500 ? Décrire ce que voit l'utilisateur pour les requêtes n° 3 et n° 6.
  3. Les codes commençant par 4 désignent un problème dans la requête, ceux commençant par 5 un problème sur le serveur. Pour chacune des deux erreurs, proposer une cause plausible et la personne qui doit la corriger.
  4. Où et quand le contenu du fichier script.js est-il exécuté ?

QCM — Client, serveur, HTTP et formulaires

1. Quelle méthode HTTP est recommandée pour transmettre un mot de passe saisi dans un formulaire ?
2. Que garantit une connexion utilisant le protocole HTTPS plutôt que HTTP ?
3. Dans le modèle client-serveur du Web, quel logiciel exécute le code JavaScript contenu dans une page reçue ?
4. Le serveur répond à une requête avec le code de statut 404. Qu'est-ce que cela signifie ?
5. Un formulaire en méthode GET contient deux champs, nommés ville et nuits. L'utilisateur saisit Rabat et 3. Par quoi se termine l'URL demandée ?

Exercices bilan

Associer un événement JavaScript à l'action qu'il déclenche

ApplicationCorrigé gratuit

On considère l'extrait de page suivant :

<p id="statut">Non connecte</p>
<button onclick="document.querySelector('#statut').innerHTML = 'Connecte'">Se connecter</button>
<button onclick="document.querySelector('#statut').innerHTML = 'Non connecte'">Se deconnecter</button>

1. Quel événement ? Quel événement JavaScript est utilisé dans ce code pour déclencher l'exécution des instructions ? À quelle action de l'utilisateur correspond-il ?

2. Que fait le code ? En une phrase pour chaque bouton, décrire précisément ce que fait le code associé lorsqu'il s'exécute.

3. Dérouler des clics. L'utilisateur clique d'abord sur « Se connecter », puis sur « Se déconnecter ». Quel est le texte affiché dans le paragraphe #statut après chacun de ces deux clics ?

4. Associer chaque situation à son événement. Le cours présente quatre événements : onclick, onmouseover, onchange, onsubmit. Associer chacune des situations suivantes à l'événement le plus adapté :

a. L'utilisateur survole une image avec la souris, sans cliquer. b. L'utilisateur valide un formulaire d'inscription en cliquant sur le bouton d'envoi. c. L'utilisateur sélectionne une nouvelle option dans une liste déroulante. d. L'utilisateur clique sur un bouton pour agrandir une image.

Lire une requête et une réponse HTTP lors de la visite d'une page

Application

Un utilisateur tape, dans la barre d'adresse de son navigateur, l'URL https://lycee-exemple.fr/accueil. Voici ce qui est échangé :

Requête envoyée par le navigateur :

ÉlémentValeur
MéthodeGET
URL demandée/accueil

Réponse renvoyée par le serveur :

ÉlémentValeur
Code de statut200
Corps de la réponsele code HTML de la page d'accueil

1. Qui envoie quoi ? Qui joue le rôle de client dans cet échange, et qui joue le rôle de serveur ? Qui envoie la requête, et qui envoie la réponse ?

2. Pourquoi cette méthode ? La méthode utilisée est GET. Expliquer, en une phrase, pourquoi cette méthode est adaptée à une simple visite de page.

3. Un code différent. Si l'utilisateur avait fait une faute de frappe et demandé /acceuil (page inexistante), quel code de statut le serveur aurait-il vraisemblablement renvoyé ? Que se passe-t-il alors côté navigateur ?

4. Combien d'échanges au total ? La page d'accueil contient, en plus du HTML, une feuille de style CSS et un script JavaScript. Combien d'échanges requête/réponse au minimum sont nécessaires pour charger complètement cette page ? Justifier.

Correction réservée aux abonnés Premium.

Créez un compte gratuit : votre première correction est offerte.

Modifier dynamiquement le contenu d'une page avec JavaScript

EntraînementCorrigé gratuit

Une page contient l'extrait suivant, représentant une lampe connectée :

<p id="lampe">Lampe eteinte</p>
<button onclick="document.querySelector('#lampe').innerHTML = 'Lampe allumee'; document.querySelector('#lampe').classList.add('actif')">Allumer</button>
<button onclick="document.querySelector('#lampe').innerHTML = 'Lampe eteinte'; document.querySelector('#lampe').classList.remove('actif')">Eteindre</button>

1. Trois façons de modifier une page. Le cours présente trois façons de modifier un élément avec JavaScript : changer son style, changer ses classes CSS, ou changer son contenu. Laquelle (ou lesquelles) sont utilisées dans ce code ? Justifier en citant les instructions concernées.

2. Un clic. L'utilisateur clique sur le bouton « Allumer ». Donner le texte affiché dans le paragraphe #lampe juste après, et indiquer si la classe actif est alors présente sur cet élément.

3. Une séquence de clics. L'utilisateur clique successivement sur : Allumer, puis Allumer une seconde fois, puis Éteindre. Donner le texte affiché après chacun des trois clics. Le second clic sur « Allumer » a-t-il un effet visible ? Justifier en expliquant ce que fait classList.add lorsque la classe est déjà présente.

4. Ajouter une troisième action. Écrire l'attribut onclick d'un troisième bouton « Basculer », qui doit afficher Lampe allumee si le texte actuellement affiché est Lampe eteinte, et Lampe eteinte sinon. (On pourra s'appuyer sur document.querySelector('#lampe').innerHTML pour lire le texte actuel dans une fonction JavaScript séparée, appelée depuis l'attribut onclick.)

Exécution au chargement de la page ou lors d'un événement ?

Entraînement

On considère le code JavaScript suivant, associé à la page HTML qui le suit :

<p id="message">En attente</p>
<button onclick="reagirAuClic()">Cliquez ici</button>
document.querySelector('#message').innerHTML = 'Page chargee';
 
function reagirAuClic() {
    document.querySelector('#message').innerHTML = 'Bouton clique';
}

1. Juste après le chargement. Le navigateur vient de finir de charger la page, et l'utilisateur n'a encore rien cliqué. Quel texte le paragraphe #message affiche-t-il à cet instant ? Justifier en identifiant quelle ligne du script s'est exécutée, et à quel moment.

2. Après un clic. L'utilisateur clique ensuite sur le bouton. Quel texte le paragraphe affiche-t-il désormais ?

3. Le piège classique. Un élève affirme : « la fonction reagirAuClic s'exécute dès que la page se charge, donc le paragraphe affiche Bouton clique immédiatement, avant même le clic. » Expliquer précisément pourquoi cette affirmation est fausse, en utilisant la distinction faite dans le cours entre une instruction écrite directement dans le fichier JavaScript et une instruction placée à l'intérieur d'une fonction associée à un événement.

4. Une variante. On ajoute une seconde ligne juste après la première, tout en haut du fichier JavaScript : reagirAuClic(); (un appel direct à la fonction, hors de toute fonction et hors de tout gestionnaire d'événement). Que change ce simple ajout au texte affiché juste après le chargement de la page, avant tout clic ?

Correction réservée aux abonnés Premium.

Créez un compte gratuit : votre première correction est offerte.

Choisir entre les méthodes HTTP GET et POST

Entraînement

1. GET ou POST ? Pour chacune des situations suivantes, indiquer si le formulaire concerné devrait utiliser la méthode GET ou la méthode POST, et justifier à l'aide des critères du cours (sensibilité des données, effet ou non sur le serveur).

a. Une barre de recherche sur un site d'e-commerce, qui affiche les articles correspondant au mot tapé. b. Un formulaire de connexion, avec un champ identifiant et un champ mot de passe. c. Un filtre permettant de choisir une fourchette de prix (prix_min, prix_max) pour afficher une liste de produits. d. Un formulaire permettant de publier un nouveau commentaire sous un article de blog.

2. L'URL d'une recherche. Pour la situation (a), en supposant que le champ de recherche se nomme q et que l'utilisateur tape console, à quoi pourrait ressembler l'URL affichée dans la barre d'adresse après validation de la recherche ?

3. Un avantage de GET dans ce cas précis. Pour la situation (c), quel avantage concret y a-t-il à ce que les critères du filtre apparaissent dans l'URL, que ne permettrait pas POST ?

4. Écrire la balise. Écrire la balise form correspondant à la situation (b), avec un attribut action valant connexion.php et la méthode adaptée.

Correction réservée aux abonnés Premium.

Créez un compte gratuit : votre première correction est offerte.

Cookies et maintien d'une connexion sur un site

Entraînement

Un élève se connecte à la plateforme de cours en ligne de son lycée, avec son identifiant et son mot de passe. Il navigue ensuite sur plusieurs pages du site (son emploi du temps, ses notes, ses devoirs) sans avoir à ressaisir son mot de passe à chaque page.

1. Le problème posé par HTTP. Le cours indique que le protocole HTTP est « sans état ». Expliquer ce que cela signifie, et pourquoi cela pose, a priori, un problème pour qu'un site se « souvienne » qu'un utilisateur est connecté d'une page à l'autre.

2. Le rôle du cookie. Décrire, étape par étape, comment un cookie permet de résoudre ce problème : que se passe-t-il lors de la première connexion (envoi de l'identifiant et du mot de passe), puis lors de la visite d'une page suivante (par exemple la page des notes) ?

3. Une affirmation à corriger. Un camarade affirme : « puisque le formulaire de connexion utilise la méthode POST, le mot de passe est forcément protégé, HTTPS n'est donc pas indispensable. » Expliquer précisément pourquoi cette affirmation est fausse, en vous appuyant sur la différence entre « ne pas apparaître dans l'URL » et « être chiffré ».

4. Une conséquence concrète. Si le site utilisait HTTP au lieu de HTTPS, et qu'une personne malveillante parvenait à intercepter le trafic réseau de l'élève, quelles données pourrait-elle potentiellement lire en clair lors de la connexion, puis lors des pages suivantes (on pensera notamment au cookie retransmis à chaque requête) ?

Correction réservée aux abonnés Premium.

Créez un compte gratuit : votre première correction est offerte.

Sujet type bac : le formulaire d'inscription à un club

Type bac

Le site d'un club scientifique propose un formulaire d'inscription, dont on étudie successivement le HTML, l'échange HTTP qu'il déclenche, une amélioration en JavaScript, puis le maintien de la connexion.

Partie A — Le formulaire HTML.

<form action="inscription.php" method="post">
    <label>Nom</label> : <input type="text" name="nom" />
    <label>Email</label> : <input type="text" name="email" />
    <label>Mot de passe</label> : <input type="password" name="mdp" />
    <label>Niveau</label> :
    <select name="niveau" onchange="afficherNiveau()">
        <option value="premiere">Premiere</option>
        <option value="terminale">Terminale</option>
    </select>
    <input type="submit" value="S'inscrire" />
</form>
<p id="message"></p>
  1. À quoi servent respectivement les attributs action et method de la balise form ?
  2. Pourquoi la méthode post est-elle appropriée ici, plutôt que get ? On donnera deux raisons distinctes.

Partie B — L'échange HTTP déclenché par l'envoi.

  1. Décrire la requête HTTP envoyée par le navigateur lorsque l'utilisateur remplit le formulaire et clique sur « S'inscrire » : méthode, URL visée, emplacement des données saisies.
  2. En cas de succès, le serveur renvoie le code 200. Si, par erreur de configuration, l'attribut action avait pointé vers un fichier inexistant, quel code de statut le serveur renverrait-il vraisemblablement à la place ?

Partie C — Un retour visuel en JavaScript.

On souhaite qu'un message s'affiche dans le paragraphe #message dès que l'utilisateur change le niveau sélectionné, sans attendre l'envoi du formulaire.

  1. Écrire la fonction afficherNiveau, appelée par l'attribut onchange de la liste déroulante, qui doit afficher Vous avez choisi : Premiere si l'option premiere est sélectionnée, et Vous avez choisi : Terminale sinon. (On pourra utiliser la propriété value de l'élément select, qui renvoie la valeur de l'option actuellement sélectionnée.)
  2. L'utilisateur sélectionne « Terminale », puis change d'avis et sélectionne « Premiere ». Donner, dans l'ordre, les deux textes successivement affichés dans #message.

Partie D — Rester connecté après l'inscription.

Une fois inscrit, l'utilisateur reste connecté au site lorsqu'il navigue vers la page « Mes séances ».

  1. Quel mécanisme, décrit en cours, permet au serveur de reconnaître l'utilisateur sur cette nouvelle page, sans lui redemander son mot de passe ?
  2. Pourquoi est-il indispensable que l'ensemble du site, y compris la page d'inscription elle-même, soit servi en HTTPS et non en simple HTTP ?
Correction réservée aux abonnés Premium.

Créez un compte gratuit : votre première correction est offerte.

Chapitre suivant