Sessions ; upload de fichiers
Notes de cours
Travail personnel
Objectifs
Ce TP commence par un exercice d'application directe du principe des sessions PHP. Le deuxième exercice vous fait manipuler l'upload de fichiers de manière assez basique, puis vous propose des compléments moins directs.
Exercice 1 — Sessions PHP #
- En utilisant les sessions PHP, écrire un script qui crée une page HTML indiquant le nombre de visites de l'internaute, en suivant ce modèle.
- Ouvrir le moniteur réseau de Firefox (clic droit sur la page > Inspecter > onglet « Réseau » ; raccourci : control-shift-E), et observer le cookie de session transmis dans les en-têtes HTTP de la requête. Comment s'appelle-t-il ?
- L’utilisation du nom par défaut pour le cookie de session est déconseillée : il vaut mieux mettre un nom spécifique à votre application, ce qui permet de faire tourner plusieurs applications sur le même serveur sans risque qu'elles modifient les données les unes des autres. Modifier le nom du cookie de session (et vérifier que cela a bien pris effet).
- Ouvrir l'inspecteur de stockage de Firefox (clic droit sur la page > Inspecter > onglet « Stockage » ; raccourci : shift-F9), supprimer le cookie et actualiser la page. Que se passe-t-il ? Essayer également de modifier la valeur de l'identifiant. Quelle est la différence par rapport à si on avait utilisé un simple cookie
nb-visites
? - Ajouter à la page un bouton qui envoie une requête POST permettant de remettre le compteur à zéro
- Si on actualise la page après avoir remis le compteur à zéro, cela n'incrémente pas le compteur, puisqu'on envoie à nouveau la requête POST. Pour éviter cela, après avoir remis à zéro, rediriger le client vers la même page (le client utilisera la méthode GET). Optionnel : faire en sorte que cette redirection soit faite avec le statut HTTP « 303 See Other » (qui est le statut correspondant à ce cas de figure).
Exercice 2 — Dépôt de fichiers #
Bases
Créer un script affichant un formulaire permettant de déposer une image sur le serveur. Après le dépôt, la page devra montrer l'image déposée pendant toute la session de l'internaute (on parle bien de session au sens PHP : pas d'authentification ici !).
Attention, chaque internaute devra avoir sa propre image : vous pouvez tester facilement une fenêtre de navigation privée (Ctrl-Shift-P avec Firefox), ou en utilisant deux navigateurs différents. En particulier, que se passe-t-il si deux internautes déposent une image de même nom ?
Pour aller plus loin
À présent chaque internaute va avoir une collection d'images — toujours stockées en session.
- Modifier le script pour que chaque upload ajoute une image à la page, au lieu de remplacer la précédente.
- Ajouter un bouton « Supprimer » pour chacune des images affichées. Cliquer dessus supprime l'image de la page, mais aussi du serveur.
- Ajouter au formulaire d'upload un champ « titre » qui permet l'internaute de donner un titre à l'image qu'il ou elle soumet. Chaque image doit avoir son titre affiché à proximité.
- Remplacer l'utilisation d'une session par l'utilisation d'une base de données.