PROJET FÂ

Méthode agile, Triggers, Base de données etc..

Présentation du site Fâ

Le site archéologique du Fâ à Barzan, en Charente-Maritime, abrite les vestiges d’une importante agglomération gallo-romaine datant de l’Antiquité.

Problématique

La popularité croissante du site et l'abondance de ses ateliers attirent de plus en plus de monde, créant une affluence massive à certaines heures. Cette situation oblige souvent les employés à se concentrer sur l'achat et le contrôle des billets au lieu de préparer leurs ateliers. Cette gestion peu optimale révèle un manque de personnel durant les pics d'affluence. Ayant observé cette problématique lors de votre visite estivale au site de Fâ, vous pensez qu'il serait envisageable d'améliorer la fluidité à l'entrée des visiteurs?

Objectifs

Formulaire de réservation

La mise en place d'un formulaire de réservation en ligne permettrait aux visiteurs de se procurer leurs billets plus facilement, tout en simplifiant le travail des employés en éliminant la nécessité de réserver sur place.

Assurer une sécurité

Pour garantir la sécurité des formulaires de réservation en ligne, il est essentiel de mettre en place des mesures robustes pour prévenir les attaques par injection SQL (SQLi).

Méthode Agile

L'objectif est de favoriser un esprit d'équipe harmonieux en adoptant la méthode Agile pour une collaboration efficace et flexible.

Outils utilisés

gitlab logo

GitLab

GitLab est utilisé pour faciliter la collaboration et la gestion de code dans les projets de développement logiciel.

FileZilla logo

FileZilla

FileZilla permet le transfert de fichiers via FTP entre un ordinateur local et un serveur distant.

Visual Studio Code Logo

VSC

Visual Studio Code (VSC) est un éditeur de code source léger mais puissant qui supporte le développement de nombreux langages de programmation.

Méthode Agile

La méthode Agile offre un avantage significatif en termes de flexibilité et d’adaptabilité. En privilégiant des cycles de développement courts et une collaboration étroite entre toutes les parties prenantes, elle permet aux équipes de mieux répondre aux changements et d’ajuster rapidement leurs plans. Cela conduit à une amélioration continue du produit et à une plus grande satisfaction client, car les retours sont intégrés de manière régulière tout au long du processus de développement.

Développeurs

Team

Arrows
Client

Product Owner

Kanban board

Dans la méthode Agile, l’organisation repose sur un tableau divisé en colonnes représentant les étapes du processus, comme « À faire », « En cours », et « Terminé ». Chaque tâche est matérialisée par une carte qui se déplace d’une colonne à l’autre selon son avancement. Ce tableau facilite la visualisation du flux de travail, permet de définir des limites de capacité pour prévenir les surcharges, et sert de référence lors des réunions quotidiennes pour discuter des progrès et des ajustements nécessaires, assurant ainsi une gestion dynamique et réactive du projet.

Architecture MVC

L’architecture MVC (Modèle-Vue-Contrôleur) est un modèle de conception utilisé dans le développement de logiciels pour séparer les données d’une application, l’interface utilisateur, et la logique de contrôle.

http://194.199.35.4/varli/ProjetSiteFa/LancerLeSite/index.php?controleur=reservation&action=reserver

Droits utilisateurs

L’attribution de droits spécifiques à chaque utilisateur dans un SI est importante pour plusieurs raisons :

Sécurité : Limiter l’accès aux ressources sensibles uniquement aux utilisateurs autorisés réduit le risque de fuites de données, d’abus ou de manipulation non autorisée.

Contrôle d’accès : Les droits par utilisateur permettent de définir qui peut lire, modifier, supprimer ou créer de nouvelles entrées dans une base de données ou un système. Cela aide à maintenir l’intégrité et la confidentialité des données.

Responsabilisation : En attribuant des droits spécifiques, il est possible de tracer les actions de chaque utilisateur, ce qui facilite l’audit et la responsabilisation en cas d’erreurs ou de violations.

Personnalisation : Les droits par utilisateur permettent de personnaliser l’expérience et les fonctionnalités accessibles selon les rôles et les besoins de chaque utilisateur, améliorant ainsi l’efficacité et l’expérience utilisateur.

Prévention des erreurs : En restreignant les actions que les utilisateurs peuvent effectuer, on minimise le risque d’erreurs accidentelles ou de modifications malveillantes qui pourraient compromettre le système.

Exemple

Droit à la création uniquement

				
					
    private function setConnexionSelonRole(string $role)
    {
        switch ($role) {
            case "create":
                $login = "DsDwCwPnZhw_CREATE";
                $mdp = "jhlJARMWLz";
                break;

            case "read":
                $login = "rFfTuRtqDq_READ";
                $mdp = "JehndGUPuPAb";
                break;

            case "update":
                $login = "KvhFTLgNjNEy_UPDATE";
                $mdp = "CoTaoGhdjSt";
                break;

            case "delete":
                $login = "aDrLuFRwlPI_DELETE";
                $mdp = "IYQsaHehBDdh";
                break;
        }
        $this->setConnexionBase($login, $mdp);
    }
				
			

Formulaire de réservation

Le formulaire de réservation recueille les informations suivantes :

Nom
Prénom
Date de Naissance 
Adresse
Ville
Code Postal
Date d’arrivée
Nombre d’adultes 
Nombre d’enfants 
Téléphone 
Adresse e-mail

Déclencheurs et Triggers

Un trigger, également appelé déclencheur, permet d’exécuter un ensemble d’instruction SQL juste après un événement.

				
					DELIMITER //

CREATE TRIGGER VerifierNbPersonnesAvantInsertion
BEFORE INSERT ON visiteurs
FOR EACH ROW
BEGIN
    IF NEW.NbEnfants > 10 THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Le nombre d\'enfants ne peut pas dépasser 10.';
    ELSEIF NEW.NbAdultes > 10 THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Le nombre d\'adultes ne peut pas dépasser 10.';
    END IF;
END;

DELIMITER ;

				
			
				
					    case 'enregistrer';
        try {
            $nom = $_POST["nom"];
            $prenom = $_POST["prenom"];
            $dateNaiss = $_POST["dateNaiss"];
            $adresse = $_POST["adresse"];
            $ville = $_POST["ville"];
            $cp = $_POST["cp"];
            $nbAdultes = $_POST["nbAdultes"];
            $nbEnfants = $_POST["NbEnfants"];
            $dateArrivee = $_POST["DateArrivee"];
            $telephone = $_POST["Telephone"];
            $email = $_POST["email"];
            $connexionComp = new VisiteurDAO();
            $enregistrement = $connexionComp->ajouterVisiteur($nom, $prenom, $dateNaiss, $adresse, $ville, $cp, $nbAdultes, $nbEnfants, $dateArrivee, $telephone, $email);
            $connexionComp = null;
            include("vues/enregistrementPrisEnCompte.html");
        } catch (Exception $e) {
            include("vues/erreurLimitation.html");
        }
        break;
				
			

Si tout est ok

La mise en œuvre des triggers dans la base de données a renforcé la sécurité et l’efficacité des processus, tandis que l’architecture MVC a amélioré la structuration du code et la réactivité des applications.

Fin

© Eren Varli