TP3

Techniques mises en oeuvre

  1. lecture d'un fichier,
  2. upload de fichier,
  3. écriture dans un fichier,
  4. manipulation de dates, 
  5. session

Expression des besoins

YAHP doit permettre la saisie web d'un ticket ... et sa sauvegarde sur le serveur!
Un administrateur doit pouvoir préciser la liste des applications gérées par le système sans modifier le code html ou php; cette liste est donc définie sur le serveur dans un fichier app.csv (exemple) et lue lors de la construction du formulaire.
Pour éviter des attaques malicieuses, seuls les utilisateurs authentifiés ont désormais la possibilité de se connecter.
UC
En l'absence de base de données, les informations d'un ticket sont sauvegardées sur le serveur dans un fichier tickets.csv. Chaque ligne de ce fichier a la structure suivante :
	ID_ticket;nom_application;login;ID_priorité;type;date_de_création;résumé;description;nom_de_la_pièce_jointe
    (où ID_ticket et ID_priorité sont des entiers, type peut prendre les valeurs 'anomalie' ou 'évolution', la priorité est un entier, la date est une chaîne de caractères au format jj/mm/yyyy)

Travail demandé

Génération dynamique de la liste des applications

Certains des éléments du formulaire de saisie de ticket devenant aussi dynamiques, on va remplacer le fichier statique saisieTicket.html par une page dynamique editTicketForm.php.
Le lien public permettant à un utilisateur de saisir un ticket devient editTicket.php. Ce fichier doit :

Précision : la fonction getAllApplisAsOptions() doit retourner une chaine de caractères de la forme :

        <option value="-1">--Autre--</option>
        <option>Application1</option>
        <option>Application2</option> ...

Sauvegarde des informations saisies dans le formulaire

Modifier le script de traitement du formulaire editTicketAction.php. Il doit définir et utiliser les fonctions suivantes:
Précisions
Les fonctions saveTicket() et printTicketAsTableRow() doivent avoir les signatures suivantes:
. saveTicket($applicationName, $login, $priorityId, $type, $date, $oneLiner, $description, $attachmentName)
.printTicketAsTableRow($applicationName, $priorityText, $type, $date, $oneLiner, $description, $tableRecordClass)

La date de création du ticket doit aussi être enregistrée au format jj/mm/yyyy.
Par souci de simplification, on pourra considèrer dans cette étape que le champ description ne comporte qu'une seule ligne.

(Note : il peut s'avérer nécessaire de modifier les droits d'écriture du fichier tickets.csv.)

Gestion de session

On souhaite protéger l'accès à la page editTicket.php et aux autres pages: si l'utilisateur ne s'est pas identifié, (i.e.si un attribut userId (ou login)  n'est pas présent dans la session), il est renvoyé sur un formulaire d'identification.
Suivre les étapes du tutoriel de contrôle d'accès aux pages pour mettre en place ce mécanisme de protection.