KlarIA
💻 NSI (spécialité)1ereCours

Interactions entre l'homme et la machine sur le Web

📖

Cours

Interactions entre l'homme et la machine sur le Web

Une page web n'est plus une simple page à lire : on y clique sur des boutons, on remplit des formulaires, on fait défiler des cartes.

Cette interface homme-machine (IHM) repose sur des composants graphiques décrits en HTML, dont le comportement est programmé en JavaScript, en réponse à des événements.

Derrière l'écran, le navigateur (le client) dialogue avec un serveur grâce au protocole HTTP. Ce chapitre apprend à lire le code d'une page interactive, à distinguer ce qui s'exécute côté client et côté serveur, et à comprendre comment un formulaire transmet ses données.

1. Les composants graphiques d'une page

1.1 HTML décrit, CSS habille, JavaScript agit

LangageSon rôleExemple
HTMLdécrire la structure et les composantstitres, paragraphes, boutons, champs
CSSdécrire l'apparencecouleurs, tailles, disposition
JavaScriptdécrire le comportementce qui se passe quand on clique

Le navigateur lit ces trois langages et affiche la page.

Voici une page qui utilise les trois. Change la couleur, le texte du bouton, le message, puis actualise l'aperçu.

Aperçu

1.2 Les composants d'interaction

ComposantCode HTMLRôle
bouton<button id="ok">Valider</button>déclencher une action
champ de texte<input type="text" id="nom">saisir une valeur
case à cocher<input type="checkbox" id="cgu">choisir oui ou non
bouton radio<input type="radio" name="taille" value="M">choisir une option parmi plusieurs
liste déroulante<select id="pays"><option>France</option></select>choisir dans une liste
zone de texte<textarea id="message"></textarea>saisir plusieurs lignes
lien<a href="page2.html">Suite</a>naviguer vers une autre page

Les voici tous réunis. Ajoute une option à la liste, ou un troisième bouton radio.

Aperçu

Ici, le bouton ne fait rien : aucun comportement ne lui a encore été associé. C'est l'objet de la partie suivante.

Composants HTML et rendu

2. Les événements

2.1 Un événement, une fonction

ÉvénementSe produit quand…
clickon clique sur le composant
inputon saisit un caractère dans un champ
changela valeur d'un composant a changé
keydownune touche est pressée
mouseoverla souris survole le composant
submitun formulaire est envoyé
loadla page a fini de se charger
Aperçu

2.2 Ce qu'il faut savoir lire et modifier

Voici un compteur de clics. La variable compteur est déclarée en dehors de la fonction : elle garde sa valeur d'un clic à l'autre.

Aperçu
Correction · Des solutions possibles

a) On remplace compteur + 1 par compteur + 2.

b) On ajoute <button id="zero">Remettre à zéro</button>, puis dans le script :

function remettre() {
  compteur = 0;
  document.getElementById("nb").textContent = compteur;
}
document.getElementById("zero").addEventListener("click", remettre);

c) Au début de la fonction saluer, après la lecture de p :

if (p === "") {
  document.getElementById("message").textContent = "Écris ton prénom";
  return;
}

JavaScript ressemble à Python, avec quelques différences de syntaxe.

let compteur = 0;

function clic() {
  compteur = compteur + 1;
  if (compteur === 10) {
    console.log("Dix clics !");
  }
}

3. Le dialogue client-serveur

3.1 Requête et réponse HTTP

Une requête contient une méthode (GET pour obtenir, POST pour envoyer des données), une URL et des en-têtes.

Le serveur effectue des calculs : lire un fichier, interroger une base de données, exécuter un programme en Python ou en PHP.

Il renvoie une réponse : un code, puis un contenu (page HTML, image, données). Le client traite la réponse : il affiche la page et exécute son JavaScript.

CodeSignification
200200succès
404404ressource introuvable
500500erreur du serveur
GET /recherche?q=nsi&page=2 HTTP/1.1        ← requête du client
Host: www.exemple.fr

HTTP/1.1 200 OK                             ← réponse du serveur
Content-Type: text/html; charset=utf-8

<!DOCTYPE html><html>…</html>

3.2 Qui exécute quoi, et dans quel ordre ?

ÉtapeQuoi
1clientl'utilisateur clique un lien ou valide un formulaire ; le navigateur construit la requête
2réseaula requête voyage jusqu'au serveur
3serveurle programme du serveur calcule la réponse : accès à la base de données, génération de la page
4réseaula réponse revient
5clientle navigateur affiche la page et exécute son JavaScript

3.3 Ce que le client mémorise et retransmet

C'est ce qui permet de rester connecté d'une page à l'autre, car HTTP ne garde aucun souvenir entre deux requêtes.

Le client mémorise aussi un cache (images et fichiers déjà téléchargés) et l'historique.

3.4 Transmission chiffrée : HTTPS

HTTPS ajoute le chiffrement, grâce au protocole TLS : le contenu des requêtes et des réponses devient illisible pour un tiers.

Un certificat garantit en plus l'identité du serveur : c'est le cadenas affiché par le navigateur.

On chiffre dès qu'il y a des données personnelles, un mot de passe, un paiement. Aujourd'hui, la quasi-totalité des sites utilisent HTTPS.

4. Les formulaires : GET ou POST

4.1 Un formulaire simple

<form action="/inscription" method="post">
  <input type="text" name="pseudo" />
  <input type="password" name="mdp" />
  <input type="submit" value="S'inscrire" />
</form>

Quand l'utilisateur valide, le navigateur envoie au serveur, à l'adresse indiquée par action, les couples nom=valeur de tous les champs qui ont un attribut name.

La méthode décide de la façon de les envoyer.

4.2 GET : les paramètres dans l'URL

Avec method="get", les paramètres sont ajoutés à l'URL après un ?, et séparés par &.

Exemple : /recherche?q=nsi&page=2.

La page ci-dessous construit l'URL qu'un formulaire GET enverrait, sans rien envoyer. Saisis une recherche, puis ajoute un champ name="langue".

Aperçu

4.3 POST : les paramètres dans le corps

Avec method="post", les paramètres sont placés dans le corps de la requête : ils sont invisibles dans l'URL, et leur taille n'est pas limitée.

CritèreGETPOST
paramètresdans l'URL (?a=1&b=2)dans le corps de la requête
visibilitévisibles, conservés dans l'historiqueinvisibles dans l'URL
taillelimitéegrande (fichiers)
usageobtenir, rechercher, filtrercréer, modifier, se connecter
favoris, partageouinon

5. Exemple résolu pas à pas

On donne la page suivante. Essaie-la avant de répondre.

Aperçu
Correction · Question a

Un champ numérique prix, qui peut traiter input et change.
Une case à cocher etudiant, qui peut traiter change.
Un bouton calc, dont l'événement click est associé au gestionnaire calculer.
Un paragraphe total, modifié par le script.

Correction · Question b

p vaut 1212. La case est cochée, donc p devient 66.
Le paragraphe affiche « Total : 6 € ».

Correction · Question c
function calculer() {
  let p = Number(document.getElementById("prix").value);
  if (p < 0) {
    document.getElementById("total").textContent = "Prix invalide";
    return;
  }
  if (document.getElementById("etudiant").checked) {
    p = p * 0.75;
  }
  document.getElementById("total").textContent = "Total : " + p + " €";
}
Correction · Question d

Sur le client : aucune requête n'est envoyée, tout se passe dans le navigateur.
Pour un paiement, le serveur doit recalculer le prix à partir de ses propres données, car le JavaScript du client peut être modifié par l'utilisateur.

À retenir

Révise ce chapitre avec KlarIA

Tuteur qui t'explique pas à pas, quiz pour t'entraîner, flashcards pour mémoriser. Gratuit.

Créer mon compte gratuitement