1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
*******************************************************************************
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.
|