Tutoriel de correction du TP3 

Partie 3 - Contrôle d'accès aux pages

Mise en place

On suppose qu'un répertoire tpdsi a été créé à la racine du site  web. 

Décompresser l'archive loginAcces.zip  dans le répertoire tp3

Si le serveur web est lancé sur la machine locale,  on doit pouvoir tester l'accès contrôlé à cette page d'exemple qui affiche un formulaire d'identification.

Essayer le couple (ZZZ,ZZZ) comme login et mot de passe (invalides). Un message "Login ZZZ inconnu" s'affiche.

Essayer le couple (AAA, AAA) . La page s'affiche! (Le login saisi a été mémorisé dans la variable de session $_SESSION['userId'] .)

Cliquer sur le lien "Se déconnecter". La session est alors détruite et le formulaire d'identification s'affiche à nouveau.

Protection d'accès du formulaire de saisie

Il suffit de rajouter 2 lignes dans chaque fichier dont on veut controler l'accès. Ainsi pour editTicket.php :

En tout début de fichier, insérer :

<?php session_start(); ?>

A l'endroit où l'on désire voir s'afficher le formulaire d'identification (à l'intérieur de la balise <body>), insérer :

<?php include 'login/loginAccess.inc.php'; ?>

Tester.

Il est possible à l'utilisateur de se déconnecter.

Juste avant </body>, insérer le code HTML suivant :

<a href="?logout=1">Se déconnecter</a>

Tester.

Récupération du login de l'utilisateur

Le login de l'utilisateur qui a créé un ticket a été rangé dans la variable de session $_SESSION['userId']. On peut donc passer cette information à la fonction saveTicket() dans editTicketAction.php :

$login = $_SESSION['userId'];
saveTicket($application, $login, $priority, $type, $todayDate, $oneLiner, $contents, $attachmentName);

Attention, il ne faut pas oublier d'appeler session_start(), sinon la session est inaccessible!

En tout début de fichier, insérer :

<?php session_start(); ?>

Protection d'accès de la page de traitement du formulaire

Il faut interdire aux utilisateurs non identifiés l'accès direct au script editTicketAction.php et les rediriger vers le formulaire de saisie (ou la page d'accueil du site).

En tout début de fichier, insérer :

<?php
session_start();
if ( !isset($_SESSION['userId']) ) {
  header('Location: editTicket.php');
  exit();
}
?>

Tester en créant ce ticket de priorité urgente et vérifier le fichier tickets.csv résultant.