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
.phpdans 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/PSR2dans 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.phpdans votre dossier personnel pour écrire votre code.- Ex.
/web/joel.dacomo/form-ctrl.php - Un modèle est à disposition dans le dossier
template:/web/template/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
uniqidpour 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
featurepar personne (ex.feature/form-ctrl-joel.dacomo). - Faites un "merge commit" (merge no-fast-forward) de votre branche
featuredans la branchedevelopune fois la page web complètement terminée. - Créez une branche
releaseavec 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
releasedans les branchesmainpuisdevelop(dans cet ordre). - A la fin du travail pratique, seules les branches
mainetdevelopdoivent exister surorigin(plus de branchesfeatureourelease).
🚨 Pas de merge dans ou depuis les branches origin, uniquement dans les branches locales !
- Si votre
pushne passe pas surorigin, faites unfetchet résolvez les conflits (éventuellement faites unrebase). - Evitez de faire un
pullafin de ne pas générer demergeinutile. - Utilisez "interactive rebase" pour repositionner, modifier, arranger vos
commitsdans votre branchefeature, si besoin. - Utilisez les branches
hotfixpour corriger les erreurs ou les oublis dans le code fusionné dans la branchemain.
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 30 novembre à 23h59.
La dernière version du site web doit avoir été mise en ligne sur votre VPS au plus tard le lundi 1er décembre à 8h15.
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)