Conception de l'espace membres



Quelles sont les fonctionnalités d'un espace membres ?

C'est la première question que nous devons nous poser : qu'est-ce que nous souhaitons faire concrètement ? Cela nous permettra aussi de définir ce que nous souhaitons éviter d'avoir à concevoir, au moins dans un premier temps.


Vous êtes probablement habitués aux espaces membres sur d'autres sites. Qui n'a jamais créé un compte sur un site web ? Sur Twitter ou Facebook ? Vous avez forcément déjà vu un espace membres, même si le site web ne l'appelle pas exactement comme cela. Vous devriez donc savoir qu'un espace membres nécessite au minimum les éléments suivants :

  • une page d'inscription ;
  • une page de connexion ;
  • une page de déconnexion.


On peut ensuite ajouter d'autres pages, par exemple pour afficher et modifier son profil de membre. Cependant, il faut au minimum avoir créé les pages que je viens de mentionner. La figure suivante devrait vous permettre d'avoir une bonne vue d'ensemble des étapes de la vie d'un membre, de son inscription à sa connexion et sa participation au site.



Les étapes de la vie d'un membre



Une fois cette base prête, il sera ensuite possible de créer tout l'espace participatif de votre site qui reposera sur les membres : les forums, les commentaires des actualités, etc. Elles sont représentées en pointillés sur la figure suivante. Nous utiliserons le numéro du membre (son « id ») pour lier ses messages à son compte, à l'aide des jointures SQL que vous connaissez bien maintenant.


Pour commencer, nous allons créer la table MySQL qui stockera les membres de notre site. C'est la première étape qui nous permettra ensuite d'aller plus loin et d'étudier la création des principales pages dont nous avons parlé : inscription, connexion et déconnexion.


La table des membres


Qu'est-ce qui caractérise un membre ? Essayons de voir ce que nous avons besoin de stocker au minimum pour créer la table :

  • un pseudonyme ;
  • un mot de passe ;
  • une adresse e-mail ;
  • une date d'inscription.


Bien entendu, on pourrait ajouter d'autres champs, comme sa signature, sa date de naissance ou son adresse de messagerie instantanée. Nous allons cependant faire simple pour commencer, sachant qu'il est toujours possible d'ajouter des champs à la table par la suite comme nous l'avons appris.


Je vous propose donc de créer une table nommée membres avec les champs suivants :

  • id (int, primary, auto_increment) ;
  • pseudo (varchar 255) ;
  • pass (varchar 255) ;
  • email (varchar 255) ;
  • date_inscription (date).


Ces champs sont résumés sur la figure suivante qui présente la table une fois créée sous phpMyAdmin.



Les champs de la table membres



Si vous souhaitez que vos membres appartiennent à des groupes différents, il pourrait être intéressant de créer une table groupes listant tous les groupes (membre, administrateur, modérateur…). Vous ajouteriez à la table des membres un champ nommé id_groupe qui stockerait le numéro du groupe, ce qui vous permettrait de faire une jointure entre les deux tables comme nous l'avons fait avec les jeux vidéo et leurs propriétaires plus tôt dans le cours.


La problématique du mot de passe


Un de ces champs mérite une attention particulière : celui qui stocke le mot de passe. En effet, lorsqu'ils s'inscriront, vos visiteurs enverront en toute confiance un mot de passe à votre site. Il est très probable qu'ils utilisent le même mot de passe sur de nombreux autres sites. Bien que ce soit une très mauvaise habitude en matière de sécurité (idéalement, il faudrait utiliser un mot de passe différent par site), ce cas de figure est hélas extrêmement fréquent.


Sachant cela, vous avez une certaine obligation morale et éthique en tant que webmasters : vous ne devriez pas stocker les mots de passe de vos visiteurs dans la base. Si celle-ci tombait entre de mauvaises mains (cela pourrait arriver dans un cas critique, comme le piratage de votre site, ce que je ne vous souhaite pas), une personne aurait accès à tous les mots de passe de vos membres et pourrait s'en servir pour voler leurs comptes sur d'autres sites !


Pourtant, je dois bien stocker le mot de passe de mes membres si je veux pouvoir par la suite m'assurer que ce sont les bonnes personnes ! C'est un problème impossible à résoudre !


C'est ce que vous croyez, et pourtant la solution existe : elle s'appelle le hachage. C'est une fonction qui transforme n'importe quel texte en un nombre hexadécimal qui représente le mot de passe mais qui est illisible, comme le montre la figure suivante.




La fonction de hachage rend le mot de passe illisible



Pour hacher un mot de passe, il existe plusieurs fonctions qui se basent sur des algorithmes différents. Je vous conseille d'utiliser sha1 sur vos sites web.

Il existe d'autres fonctions ayant le même rôle, notamment md5 qui est très connue. Cependant, cette fonction de hachage n'est plus considérée comme sûre aujourd'hui et il est fortement recommandé d'utiliser sha1.


La particularité du hachage est qu'il fonctionne dans un seul sens : il est impossible de retrouver le mot de passe d'origine une fois qu'il a été haché. De plus, un hash (nom donné à la version hachée du mot de passe) est unique : il correspond à un et un seul mot de passe.


Vous stockerez la version hachée du mot de passe, qui sera donc passé à la moulinette par la fonction sha1. Lorsqu'un visiteur voudra se connecter, il vous enverra son mot de passe que vous hacherez à nouveau et que vous comparerez avec celui stocké dans la base de données. Si les deux mots de passe hachés sont identiques, alors cela signifie que le visiteur a rentré le même mot de passe que lors de son inscription.

Créé avec HelpNDoc Personal Edition: Maximisez la protection de vos PDF en suivant ces étapes simples