J'ai commencé par recueillir les besoins du client fictif à travers un cahier des charges détaillé, ce qui m’a permis de définir clairement les attentes
fonctionnelles et techniques du projet. Cette étape s’est traduite par :
- La création de diagrammes UML : cas d’utilisation, classes et séquences.
- La modélisation de la base de données relationnelle avec MySQL.
- Le choix de l’architecture technique : un environnement full-stack basé sur PHP, HTML/CSS, JavaScript et MySQL.
Le développement de l’application s’est déroulé de manière itérative, avec des phases successives de maquettage, de codage et de tests. Parmi les principales réalisations :
- Une page d’accueil avec tableau de bord dynamique, affichant les informations du compte, les données bancaires, et le suivi des paiements.
- Une interface fluide pour la génération et l’exportation de fichiers Excel (.xlsx) via JavaScript. Les données sont extraites dynamiquement du tableau HTML et converties au format XLSX grâce à la bibliothèque XLSX.js.
- Une fonctionnalité complète pour l’importation de données à partir de fichiers Excel, qui permet aux utilisateurs de mettre à jour la base sans saisie manuelle. L’import repose sur une interaction entre JavaScript et PHP, utilisant PHPExcel pour le traitement côté serveur.
Outils et technologies utilisés :
- PHP (programmation orientée objet)
- MySQL (conception relationnelle)
- HTML5 / CSS3 / JavaScript JQuery
- PHPExcel pour l’import XLSX
- GitHub pour le versioning
Dans le cadre de la gestion commerciale et comptable, certaines informations sensibles comme les coordonnées bancaires (IBAN, BIC), les numéros de mandat ou les
identifiants clients nécessitent une protection renforcée. Pour répondre à cet enjeu de sécurité, un système de chiffrement asymétrique RSA a été mis en place.
Pourquoi chiffrer les données ?
Le chiffrement permet de garantir :
- La confidentialité : seules les personnes autorisées peuvent consulter les données en clair via l’application.
- L’intégrité : toute tentative de modification non autorisée est détectable.
- La sécurité en cas de fuite : même si des données sont compromises, elles restent illisibles sans la clé privée.
Fonctionnement du chiffrement
- Les données sensibles sont chiffrées avec une clé publique grâce à
openssl_public_encrypt()
.
- Elles sont ensuite encodées en base64 pour être stockées facilement dans la base de données.
- Lors de la consultation, les données sont déchiffrées avec une clé privée via
openssl_private_decrypt()
, chargée de manière sécurisée avec un mot de passe.
Ce mécanisme garantit que seule l’application, ou un utilisateur autorisé disposant de la clé privée, peut accéder aux informations sensibles.
function chiffrer($chaine){
$public_key = openssl_pkey_get_public('file://./chiffrement/pb.pem');
openssl_public_encrypt($chaine, $chaineChiffree, $public_key);
return base64_encode($chaineChiffree);
}
Intégration dans l’application
Le chiffrement a été intégré directement dans les flux de traitement :
- À l’importation d’un fichier Excel, les champs critiques sont automatiquement détectés et chiffrés avant insertion en base.
- Lors de la modification d’un champ sensible depuis l’interface, la nouvelle valeur est chiffrée en temps réel.
- À l’affichage, les données sont automatiquement déchiffrées pour être lisibles par l’utilisateur, sans altérer la fluidité de l’expérience.
Cette gestion automatisée du chiffrement et du déchiffrement permet de concilier sécurité maximale et simplicité d’utilisation.
L’un des enjeux majeurs du projet était de permettre une interaction directe entre l’application et d’autres outils comme Excel.
- Export des données
- Les données du tableau HTML sont analysées ligne par ligne en JavaScript.
- Les contenus des cellules sont extraits (textes simples ou listes déroulantes).
- Ces données sont ensuite converties en une feuille Excel via
XLSX.utils.aoa_to_sheet
, puis insérées dans un classeur (book_new
).
- Le fichier généré (table_facturation.xlsx) est automatiquement téléchargé par l’utilisateur.
- Import des données
- Un bouton dédié déclenche un script JavaScript qui lit le fichier Excel sélectionné.
- Le fichier est envoyé à un script PHP via AJAX avec FormData.
- Côté serveur, PHPExcel analyse les données de la feuille, identifie les colonnes pertinentes, et les insère en base après filtrage, conversion et chiffrement si nécessaire.
- Les doublons sont évités grâce à une requête
INSERT IGNORE
.
Le client (ici, un membre de mon entourage) a pu assister à une démonstration d'une version entièrement fonctionnelle de l'application. L'organisation de l’interface, la clarté du tableau de bord et la souplesse de l’import/export Excel ont été particulièrement saluées. Le projet répond efficacement aux besoins de gestion commerciale et de portabilité des données.