Aller au contenu

Travail pratique

ID : A11-TP07.2

But du TP

  • Prendre en main l'IDE IntelliJ IDEA
  • Se familiariser avec l'utilisation du système de gestion de versions Git et la plateforme de gestion de projets GitLab
  • Valider et enregistrer les données d'un formulaire web dans un fichier CSV avec PHP
  • Envoyer un email avec la librairie PHPMailer

Travail à réaliser

Code styles

  • Configurez Prettier pour les fichiers .php dans IntelliJ IDEA.
  • Configurez les "Code Style" pour PHP dans IntelliJ IDEA.
    • Cliquez sur Set from… en haut à droite de la page des paramètres des "Code Style" pour PHP et sélectionnez PSR1/PSR2 dans la liste.
  • Configurez les inspections pour PHP dans IntelliJ IDEA.

Composer

Composer est un outil de gestion des dépendances pour PHP. Il vous permet de déclarer les bibliothèques dont votre projet dépend et il les gérera (installation/mise à jour) pour vous.

PHP

  1. Implémentez une page PHP permettant d'enregistrer les données du formulaire, réalisé lors de la partie 1 de ce travail pratique, dans un fichier CSV (Comma-separated values).

    • Créez un fichier PHP form-ctrl.php dans votre dossier personnel pour écrire votre code.
      • Ex. /web/joel.dacomo/form-ctrl.php
    • Changez la destination de l'envoi des données de votre formulaire web par le chemin de ce fichier form-ctrl.php.
  2. Validez les données selon les mêmes critères que ceux définis pour le formulaire web (formats, types de données, valeurs autorisées, champs obligatoires, etc.).

    • Ajoutez les restrictions de tailles suivantes sur le formulaire web :
      • Nom, Prénom, Adresse, Localité : 255 caractères maximum
      • Commentaire : 1'000 caractères maximum
    • En cas d'erreur de validation, l'utilisateur doit être redirigé vers la page d'erreur /web/form-error.html.
    • Pour simplifier les tests, installez et utilisez le logiciel Postman.
  3. Enregistrez les données du formulaire web dans le fichier /data/form-data.csv.

    • Les nouvelles données doivent être ajoutées à la fin du fichier et ne doivent pas remplacer ou écraser celles qui existent déjà dans ce fichier.
    • Chaque nouvel enregistrement de données doit débuter par un identifiant unique (voir les exemples dans le fichier).
      • Utilisez la fonction PHP uniqid pour générer un identifiant unique : PHP - uniqid.
    • Ajoutez la date de l'enregistrement des données dans le fichier CSV (date et heure de réception du formulaire).
  4. Après l'enregistrement des données dans le fichier CSV, envoyez un email de confirmation de l'inscription, au format texte, à l'adresse email spécifiée dans le formulaire, selon le modèle ci-après.

    tp-email.png

    • Utilisez la librairie PHPMailer qui a été ajoutée à votre projet via Composer.
    • Les informations pour le compte à utiliser pour l'envoi de l'email se trouvent dans le fichier README du projet.
    • Le titre de civilité (Monsieur ou Madame) doit correspondre au champ "Sexe" du formulaire.
    • Le nom de famille doit être en majuscule.
    • La date mentionnée pour la décision définitive doit correspondre à 7 jours après celle de l'envoi du formulaire (4 déc. => 11 déc.).
    • Cette date doit être en français avec le bon encodage pour les mois avec des accents (ex. : décembre).
    • L'adresse du destinataire de l'email est celle du formulaire.
    • En cas d'erreur lors de l'envoi de l'email, l'utilisateur doit être redirigé vers la page d'erreur /web/form-error.html.
    • Si aucune erreur n'est survenue dans l'ensemble du processus, l'utilisateur est redirigé vers la page de confirmation /web/form-valid.html.
  5. Validez le fonctionnement de votre code en exécutant le jeu de tests Postman.

    • Référez-vous au fichier README pour l'exécution de ces tests.
    • 🚨 Désactivez l'envoi d'email lors des tests afin de ne pas bloquer le compte Gmail !
  6. Chaque personne doit ajouter 3 nouveaux enregistrements de données dans le fichier CSV (donc trois inscriptions faites depuis le formulaire).

    • Les données doivent être plausibles et réalistes (pas de asdf, 1234, etc.)
    • Les données ajoutées au fichier CSV doivent être versionnées lors de votre dernier commit dans la nouvelle branche feature.

Workflow Git

Utilisez le workflow Git Gitflow Workflow pour gérer les versions de votre code source et le partager entre vous.

  • Respecter l'ensemble des règles, vues en cours, relatives aux messages de commit, aux conventions de nommage des branches et à la numérotation des versions.

Pour le workflow :

  1. Créez une branche feature par personne (ex. feature/form-ctrl-joel.dacomo).
  2. Faites un "merge commit" (merge no-fast-forward) de votre branche feature dans la branche develop une fois la page web complètement terminée.
  3. Créez une branche release avec le bon numéro de version.
    • Chaque ajout d'une nouvelle feature (page personnelle) incrémente la version mineure du projet : 0.X.0 (ex. release-0.3.0).
  4. Dans la branche release, mettez à jour le fichier CHANGELOG.md.
  5. Pour terminer, faites un "merge commit" (merge no-fast-forward) de la branche release dans les branches master puis develop (dans cet ordre).
  6. A la fin du travail pratique, seules les branches master et develop doivent exister sur origin (plus de branches feature ou release).

🚨 Pas de merge dans ou depuis les branches origin, uniquement dans les branches locales !

  • Si votre push ne passe pas sur origin, faites un fetch et résolvez les conflits (éventuellement faites un rebase).
  • Evitez de faire un pull afin de ne pas générer de merge inutile.
  • Utilisez "interactive rebase" pour repositionner, modifier, arranger vos commits dans votre branche feature, si besoin.
  • Utilisez les branches hotfix pour corriger les erreurs ou les oublis dans le code fusionné dans la branche master.

Rendu du TP

Aucun rapport, manuel ou documentation n'est demandé pour ce travail pratique.

Le dernier commit sur Git doit être fait au plus tard le dimanche 1er décembre à 23h59.

La dernière version du site web doit avoir été mise en ligne sur votre VPS au plus tard le lundi 2 décembre à 13h.

Le TP sera évalué, entre autres, sur les critères suivants :

  • Respect de toutes les consignes de ce document
  • Utilisation correcte du workflow Git
  • Commits respectant les règles vues ensemble
  • Mises à jour correctes et pertinentes du changelog
  • Numérotation correcte des versions
  • Disponibilité de la dernière version du site web sur votre VPS
  • Code source de qualité respectant tous les thèmes vus durant le cours
  • Qualité du code PHP et son fonctionnement correct (inclus l'enregistrement des données dans le fichier CSV et l'envoi de l'email)