PHP TD5: Cookies et sessions

N'oubliez pas de maintenir votre page personnelle en ligne et de publier tous les exercices des TDs.

Cookie

Ecrivez une page qui crée un cookie, contenant un nombre qui s'incrémente à chaque mise à jour:

Morpion

Implémentez un jeu de morpion, dont le rendu sera fait en HTML et pourra ressembler à ceci:

Ici:

  • Les données (l'état de la grille et le joueur dont c'est le tour) seront stockés en session
    • De ce fait, si vous ouvrez deux navigateurs sur la même page, vous pourrez jouer deux parties différentes en même temps
  • Le joueur qui joue le premier coup (O ou X) sera tiré au hasard
  • Lors du clic sur une case, la grille sera mise à jour
  • On vérifiera si un joueur a gagné, auquel cas on affichera un message et on proposera de réinitialiser la grille pour faire une nouvelle partie

Identification

Créez une page de connexion (identifiant et mot de passe) qui vérifie l'identification dans la base de données.

Suivi de session

Créez une succession de pages qui à partir d'une page quelconque vérifie si l'utilisateur est connecté et sinon le redirige vers la page de connexion précédente.

Vous pouvez à ce stade mettre en place un menu, qui affiche par exemple:

  • Inscription / Connexion

Quand l'utilisateur n'est pas connecté, et:

  • Liste des séries / Déconnexion

Lorsque l'utilisateur est connecté, et rendre la liste des séries privées (il est nécessaire de se connecter pour la voir)

Séries suivies

En utilisant la table user_series dans la base de données, faites en sorte qu'un utilisateur puisse "suivre" une série (qui lui sera alors associée) ou arrêter de suivre une série.

Lorsqu'il se rendra sur la page de lad série, il verra si il la suit ou pas.

Faites une page affichant la liste des séries suivies par l'utilisateur

Une amélioration

Afin d'éviter de copier/coller le code qui vérifie qu'un utilisateur est identifié, placez le dans un fichier qu'on incluera en haut de chaque page "protégée", par exemple:

<?php
require_once('pageProtegee.php');

Cette inclusion vérifiera que l'utilisateur est identifié, et elle le redirigera vers le formulaire de connexion le cas échéant.

Lorsque l'utilisateur est redirigé vers le formulaire de connexion, faites en sorte qu'on se souvienne d'où il vient, afin de le rediriger vers cette même page après qu'il soit connecté (en gérant ça dans pageProtegee.php).

Indication: vous pourrez trouver l'URL courante dans $_SERVER

(bonus) Session "faites maison"

Faites la même chose que l'exercice précédent mais en réalisant vous même le système de session (sans utiliser session_start() ou $_SESSION)

Quelques fonctions utiles:

// Lire et écrire dans un fichier
file_put_contents($file, $data); // Ecrire
$data = file_get_contents($file); // Lire
// Tester si un fichier $file existe
if (file_exists($file)) {
}
// Générer un identifiant aléatoire
$id = uniqid();
// Transformer un objet en chaîne de caractères
$data = serialize($something);

// Transformer une chaîne de caractère en un objet
$something = unserialize($data);
// Définir un cookie 'key' à '123' qui expirera quand le
// navigateur sera fermé
setcookie('key', '123', 0);