******************************************************************************* Infos: Déroulé de la réalisation de l'exercice. ******************************************************************************* Le cahier des charges que je me suis fixé pour cet exercice est un peu plus chargé que ce qui était demandé initalement: -Mettre en place un sytème de client / consultant (et non uniquement pour moi). -Mettre en place un système d'inscription. -Mettre en place un système de connection. -Rechercher par nom un consultant. -Afficher les capacités d'un consultant. -Pouvoir enregistrer et noter une mission effectuée auprès d'un consultant en tant que client. -Pouvoir supprimer un utilisateur du site. Pour cet exercice, j'ai tout d'abord voulu créer mes pages web indépendamment les unes des autres (index, login, register, etc...), il m'a rapidement paru évident de séparer la gestion de la base de données dans un fichier à part, et mettre ce système dans une classe m'a également paru être un bon choix car on pouvait avec une classe définir les différents paramatres de connection à la base de données dans les attributs de cette dernière et initier la connection à l'instanciation. Ce système me permettait de mettre en place des requêtes en créant des méthodes et la classe grossissant j'ai décidé de la scinder en trois, le fichier principal contenant les informations de connection et d'initialisation de la base de données ainsi que quelques requêtes basiques, un second fichier contenant toutes les méthodes pour effectuer des recherches, et un dernier fichier contenant toutes les méthodes permettant de pouvoir modifier les éléments de la base de données. En avancant dans l'exercice, j'ai voulu séparer la partie "logique" (traitement des données) de la partie "rendue" (partie envoyée au client), les fichiers grossissants rapidement cela permettait de gérer plus clairement ces deux parties du site. J'ai alors décidé de faire un fichier logique que j'ai appelé "wrapper", ce wrapper avait deux objectifs: - Récupérer les données transmises par les formulaires. - Effectuer toute la partie logique (le traitement des données). Je souhaitais renvoyer toutes les données vers un seul fichier pour minimiser l'exposition d'informations transmises au client quand au fonctionnement du site web, dans une optique de sécurité je souhaite afficher au client uniquement le strict minimum. Ce fichier wrapper a lui aussi rapidement grossi, et dans un soucis de lisibilité et de facilité de maintenance, j'ai décidé de le diviser en plusieurs fichiers qui sont devenus ses fonctions. Enfin la partie "rendue" contenait les différentes pages accessibles par le client, voulant éviter la répétition dans les différentes pages, j'ai séparé les parties communes dans des fichiers à part (header, navbar, footer) cela me permettait en modifiant un seul fichier de modifier le rendu sur toutes les pages, et dans un soucis d'uniformité, j'ai décidé de "sortir" également les parties principales des différentes pages et de placer le tout dans un dossier nommé "includes" dans lequel les pages pourraient importer leur contenu. Enfin pour la gestion des langues, il m'a paru opportun de créer des fichiers contenant le texte pour chaque langue à la manière de fichier de traduction pour vidéo, et le site allait importer ensuite le fichier en fonction de la langue sélectionnée, pour le faire j'ai créé deux dossiers "fr" et "en" et je change la source de l'import en fonction de la langue choisie par le client. Pour permettre une retention d'information entre les pages, le système de session m'a paru inévitable et grâce à ce dernier, j'ai pu mettre en place le système de changement de langue (défini dans une variable de cette dernière), un système de connection (on affiche différents éléments en fonction du contenu de variable défini dans la session). J'ai également choisi de créer un système d'auto-connection car je voulais expérimenter l'utilisation de cookie en PHP pour mettre en place ce système le but était de créer un "jeton d'auto-connection": une chaine de caractères aléatoires permettant la connection, valable une seule fois et qui serait stoqué 7 jours sur le navigateur du client. La session ne restant ouverte par défaut que 24 min (https://stackoverflow.com/questions/9904105/php-sessions-default-timeout). Pour la charte graphique, j'ai mis en place ce qui me parait être la structure la plus basique pour un site web: En-tête avec barre de navigation -> corps de la page -> pied de page. J'ai choisi un style clair, anguleux et épuré avec une dominance pour le rouge. Et enfin pour pouvoir faire un peu de JS, j'ai choisi de créer un slideshow.