Orange - Gestion d'interventions techniques
Application web PHP / MySQL pour la gestion d'un service technique (clients, techniciens, articles, interventions).
Contexte
Projet réalisé en cours dans le cadre du BTS SIO option SLAM. Le sujet est fourni par le professeur, avec un cahier des charges déjà rédigé et un schéma de base imposé.
Sujet :
• une entreprise de service technique veut numériser le suivi de ses interventions
• l'application web doit être accessible aux techniciens depuis le réseau interne
• deux niveaux de droits sont demandés (administrateur et utilisateur)
C'est un projet pédagogique guidé, qui sert à mettre en pratique les bases du PHP avec accès base de données. Le sujet ne demande volontairement pas toutes les bonnes pratiques de sécurité d'une application en production (hachage des mots de passe, échappement systématique des sorties). Je les ai notées dans la partie "améliorations" pour montrer ce que j'ajouterais aujourd'hui.
Objectif
Concevoir une application web complète couvrant le cycle métier d'un atelier de réparation :
• gérer un référentiel de clients
• gérer une équipe de techniciens avec leur spécialité et leur rôle
• suivre les articles déposés (état, panne, client propriétaire)
• enregistrer les interventions (rapport, prix, lien article ↔ technicien)
• permettre de filtrer les listes par mot-clé sur plusieurs colonnes
Démarche
Architecture MVC sur trois couches PHP :
• une couche Modèle qui parle à la base via PDO, avec une méthode dédiée pour chaque opération (lister, ajouter, modifier, supprimer) et toujours des requêtes préparées pour éviter les injections SQL
• une couche Contrôleur qui reçoit la requête, demande les données au Modèle puis passe la main à la Vue
• une couche Vue qui se contente d'afficher (formulaires de saisie, tableaux de résultats)
La base contient quatre tables liées par des clés étrangères, dans la logique métier suivante : un client possède des articles, et chaque article peut faire l'objet d'une ou plusieurs interventions assurées par un technicien.
L'authentification repose sur les sessions PHP : à la connexion, les informations de l'utilisateur (identifiant, rôle, nom) sont stockées dans la session, et la déconnexion détruit cette session.
Comme c'est un projet de cours, certaines bonnes pratiques de production ne sont volontairement pas implémentées dans le sujet (hachage des mots de passe, protection anti-CSRF, échappement systématique des sorties HTML). Je les ai listées dans les améliorations à apporter en priorité si je devais reprendre ce projet pour une mise en production réelle.
Bilan
Application web PHP en architecture MVC. Accès à la base via PDO avec requêtes préparées, sessions natives pour gérer l'authentification et les deux niveaux de droits (administrateur et utilisateur).
Bilan et améliorations à apporter en priorité pour une mise en production réelle (volontairement non implémentées dans le sujet de cours) :
• hachage des mots de passe avec une fonction dédiée (actuellement stockés en clair pour rester sur les bases du PHP)
• jetons CSRF sur tous les formulaires pour empêcher la soumission depuis un autre site
• échappement systématique des sorties HTML pour éviter les failles XSS
• pagination des listes longues quand le volume de données grandit
• validation plus stricte des données côté Contrôleur
• un peu de CSS pour rendre l'interface plus agréable