TP noté

2022-2023

Licence Informatique 3ème année

Alexandre Niveau — Jean-Marc Lecarpentier

Enseignement des technologies du Web

 

TP noté

2022-2023

Durée : 1h

Mise en place de l'examen

Téléchargez l'archive du sujet, et décompressez-la. Elle contient un répertoire tp-note-tw4b-2022-VOTRELOGIN dans lequel vous effectuerez votre travail. Renommez-le en remplaçant VOTRELOGIN par votre login (ça donnera donc par exemple tp-note-tw4b-2022-dupont223 ou tp-note-tw4b-2022-21912345).

Vous pouvez placer ce répertoire où vous voulez, pas forcément sur votre espace web (on ne corrigera que ce que vous déposerez sur ecampus).

En particulier, vous pouvez laisser le répertoire sur votre compte normal et utiliser le serveur de développement inclus avec PHP de cette façon :

  1. Ouvrez un terminal dans le répertoire tp-note-tw4b-2022-LOGIN que vous avez extrait et renommé
  2. Lancez la commande php -S localhost:20202 -d display_errors=true (remplacez 20202 par un autre port si celui-ci ne marche pas…).
  3. Allez à l'URL http://localhost:20202/ : vous devriez voir le résultat de l'exécution du fichier index.php qui est dans ce répertoire. (Il y a des erreurs PHP, c'est normal.)

Attention, les erreurs affichées dans les pages sautent moins aux yeux que sur le serveur, et la stack trace est moins lisible. Cependant, toutes les erreurs PHP sont aussi affichées dans le terminal où vous avez lancé le serveur, et la stack trace y est un peu mieux.. Notez aussi que ce serveur de développement, très basique, ne sait pas afficher d'index des répertoires, comme le fait le serveur Apache utilisé pour votre www-dev.

Important

Vous devez rendre à l'issue de l'examen une archive zip contenant (à la racine) votre répertoire tp-note-tw4b-2022-LOGIN, déposée sur Ecampus dans la zone prévue à cet effet. Le nom de l'archive n'a pas d'importance, mais il est important que l'archive contienne le répertoire demandé (et pas son contenu par exemple).

Faites bien attention à ne pas déposer l'archive initiale, mais bien celle avec votre travail ! Normalement, si vous avez bien renommé le répertoire, il ne devrait pas y avoir de confusion possible.

Exercice

Le répertoire tp-note-tw4b-2022-LOGIN contient l'architecture d'un site très simple : il s'agit d'un pseudo-forum. On peut le voir en action ici. Il suit les principes présentés en cours, sauf que la « base de données » est un simple tableau stocké en session (c'est-à-dire que chaque internaute ne voit que ses propres commentaires ! Ça suffira pour un TP noté…). Au démarrage, le tableau contient deux commentaires (toujours les mêmes).

Une partie du code a été enlevée (des exceptions « not yet implemented » sont lancées à la place) : il manque la méthode de la vue permettant d'afficher le fil des commentaires, et les méthodes du contrôleur et de la vue qui concernent l'ajout d'un nouveau commentaire. NB : rien d'autre n'a été supprimé ! En particulier, vous n'avez a priori pas besoin de modifier le routeur (mais ce n'est pas interdit).

  1. Regarder les classes fournies et s'assurer de comprendre comment ça marche. (NB : il n'y a pas d'action permettant d'afficher un commentaire seul.)
  2. Implémenter la méthode makeListPage de la vue pour qu'elle affiche la liste des commentaires (optionnel : on la fera s'afficher de bas en haut), ainsi qu'un lien vers la page d'ajout de commentaire.
  3. Faire en sorte que le contrôleur appelle la méthode makeCommCreationPage de la vue lorsque l'utilisateur veut ajouter un nouveau commentaire.
  4. Implémenter l'enregistrement d'un nouveau commentaire dans la base. NB : rien n'a été supprimé dans la classe CommStorageSession, il ne devrait pas y avoir besoin de la modifier.
  5. Si ce n'est déjà fait, gérer les données invalides : l'auteur ne doit pas être vide, et on obligera chaque commentaire à avoir une longueur minimale de 10 caractères. NB : vous disposez d'une classe CommBuilder dont rien n'a été supprimé non plus.
  6. Si ce n'est déjà fait, gérer la redirection après une requête POST, et le feedback associé.
  7. Si ce n'est déjà fait, faire en sorte que soumettre un commentaire invalide ne remette pas les champs du formulaire à zéro, mais les laisse en l'état.