Un site de vente calcule le total du panier en JavaScript et l'envoie…
Exercice d'entraînement · niveau 2 · NSI (première), chapitre 10 — Interagir sur le Web · Le partage client / serveur
Énoncé
Un site de vente calcule le total du panier en JavaScript et l'envoie au serveur dans un champ caché :
<input type="hidden" name="total" value="42.50">
- Que peut faire un utilisateur ? Décrire précisément le geste.
- Quels champs doivent réellement voyager du client vers le serveur ?
- Le prix d'un article change entre l'affichage de la page et la validation. Qui décide ?
Corrigé
1. Ouvrir les outils de développement, remplacer 42.50 par 0.50 dans l'attribut value, puis valider — ou, plus simplement encore, envoyer la requête directement sans jamais afficher la page. « Caché » qualifie l'apparence à l'écran, et rien d'autre : le champ est dans le document, donc dans les mains de l'utilisateur.
2. Les identifiants d'articles et les quantités. Rien d'autre. Le prix, les remises et le total sont des informations que le serveur possède déjà et qu'il doit recalculer : les faire voyager, c'est demander à l'utilisateur de les confirmer, donc lui permettre de les changer.
La règle générale se formule ainsi : ne transmettez au serveur que ce qu'il ne peut pas savoir sans vous — ce que l'utilisateur a choisi. Tout ce qui se déduit, se déduit côté serveur.
3. Le serveur, et lui seul. Il recalcule le total au moment de la validation, à partir de ses prix courants. Si le montant diffère de celui qui était affiché, il ne débite pas silencieusement : il réaffiche le panier avec le nouveau prix et redemande confirmation. Le total affiché dans la page n'était qu'une prévision.
Ce que cet exercice généralise : le total du panier n'est pas un cas particulier. Toute valeur calculée côté client et renvoyée au serveur est une valeur que l'utilisateur choisit : un score de jeu, un temps de trajet, un nombre de points de fidélité, une durée d'abonnement. Le client propose ; le serveur dispose.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.