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électionnezPSR1/PSR2
dans la liste.
- Cliquez sur
- 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.
- Installez et configurez Composer
PHP
-
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
- Ex.
- Changez la destination de l'envoi des données de votre formulaire web par le chemin de ce fichier
form-ctrl.php
.
- Créez un fichier PHP
-
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.
- Ajoutez les restrictions de tailles suivantes sur le formulaire web :
-
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.
- Utilisez la fonction PHP
- Ajoutez la date de l'enregistrement des données dans le fichier CSV (date et heure de réception du formulaire).
-
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.
- 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
.
-
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 !
-
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 :
- Créez une branche
feature
par personne (ex.feature/form-ctrl-joel.dacomo
). - Faites un "merge commit" (merge no-fast-forward) de votre branche
feature
dans la branchedevelop
une fois la page web complètement terminée. - 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
).
- Chaque ajout d'une nouvelle feature (page personnelle) incrémente la version mineure du projet : 0.X.0 (ex.
- Dans la branche
release
, mettez à jour le fichierCHANGELOG.md
. - Pour terminer, faites un "merge commit" (merge no-fast-forward) de la branche
release
dans les branchesmaster
puisdevelop
(dans cet ordre). - A la fin du travail pratique, seules les branches
master
etdevelop
doivent exister surorigin
(plus de branchesfeature
ourelease
).
🚨 Pas de merge dans ou depuis les branches origin
, uniquement dans les branches locales !
- Si votre
push
ne passe pas surorigin
, faites unfetch
et résolvez les conflits (éventuellement faites unrebase
). - Evitez de faire un
pull
afin de ne pas générer demerge
inutile. - Utilisez "interactive rebase" pour repositionner, modifier, arranger vos
commits
dans votre branchefeature
, si besoin. - Utilisez les branches
hotfix
pour corriger les erreurs ou les oublis dans le code fusionné dans la branchemaster
.
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)