Retour aux projets

Installation d'une application web de clavardage

05/01/26 → 13/02/26

Projet transversal de groupe : installation d'un environnement web sur un serveur Linux et développement d'une application de clavardage (messagerie instantanée) en PHP orienté objet, avec un routeur d'URLs et un rafraîchissement automatique des messages.

PHP (POO) JavaScript JSON MySQL PDO

Contexte

Projet de groupe réalisé de janvier à février 2026, dans le cadre du projet transversal « Installation d'une infrastructure système pour un environnement web ». L'idée était de préparer un serveur capable d'héberger une application web, puis d'y faire tourner une application de clavardage (un salon de discussion en ligne).

Objectifs

  • Mettre en place un environnement web sur une machine virtuelle Linux
  • Permettre à un utilisateur de se connecter et d'accéder à un salon de discussion
  • Envoyer des messages et voir ceux des autres s'afficher sans recharger la page
  • Organiser le code de façon claire et réutilisable

Réalisation

  • Architecture objet : chargement automatique des classes (autoloader), modèles User et Salon, et une classe abstraite de stockage réutilisée par le DAO des utilisateurs
  • Routeur d'URLs : toutes les requêtes passent par un point d'entrée unique qui les redirige vers le bon contrôleur selon l'adresse et la méthode (GET / POST), avec une erreur 405 si la méthode n'est pas autorisée
  • Connexion : contrôleur d'authentification et session pour protéger l'accès au salon
  • Salon : envoi des messages, stockage avec l'auteur et l'heure, et récupération de tous les messages au format JSON
  • Temps réel : côté navigateur, un script JavaScript interroge le serveur toutes les deux secondes pour afficher les nouveaux messages
  • Deuxième version : passage d'un stockage en fichiers JSON à une base MySQL avec PDO et requêtes préparées, échanges avec le serveur au format JSON, page d'inscription avec vérification du pseudo et de l'e-mail par expressions régulières, et une interface plus travaillée (contacts, discussions, paramètres)

Compétences mobilisées

  • Gérer le patrimoine informatique : préparation du serveur et de l'environnement web
  • Répondre aux incidents et aux demandes : débogage de l'application et des échanges entre le navigateur et le serveur
  • Travailler en mode projet : répartition du travail au sein du groupe et versions successives de l'application
  • Organiser son développement professionnel : découverte de la programmation orientée objet en PHP, du routage et des échanges asynchrones en JavaScript

Captures d'écran

À compléter : ajouter ici les captures du projet (dossier src/screen projets).

Bilan

Ce projet m'a fait passer d'un code PHP « page par page » à une vraie architecture : un routeur, des contrôleurs et des classes qui se partagent la logique. J'ai aussi compris comment une page peut se mettre à jour toute seule en interrogeant le serveur à intervalles réguliers.

La première version restait un prototype : le mot de passe n'était pas encore vérifié à la connexion, les données étaient stockées en clair dans des fichiers JSON, et les messages étaient affichés sans être filtrés. La seconde version corrige une partie de ces points avec MySQL et des requêtes préparées. Pour aller plus loin, il faudrait hacher les mots de passe et échapper les messages affichés pour se protéger des failles XSS.