TUTORIELS 
PHP : gérer l'accès des utilisateurs

Page 1 | 2 | 3

Un script fonctionnel pour prendre en charge l'identification des utilisateurs, leur inscription, et la récupération de leurs données.
 (12 décembre 2003)
 
Nous allons ici vous présenter un script fonctionnel permettant de gérer l'accès de vos membres à votre site. Le fichier lui-même faisant plus de 400 lignes, nous n'expliquerons que les principales parties dans cet article, et vous donnerons le code source à la fin.
Notez bien que ce script, bien que long, n'est pas forcément complet : nous avons volontairement omis des tests et vérifications qui sont nécessaires pour un site en production, afin de ne garder que le squelette de base. Le script que nous vous donnons ici n'est pas destiné à être copié/collé dans un site existant, mais à étudier pour ceux qui ne sauraient pas comment s'y prendre pour une telle réalisation, et à compléter pour ceux qui en ont bien compris le fonctionnement. Vous pouvez et devez l'adapter à vos propres besoins.

Agencement
On peut réaliser un tel script sur un seul fichier comportant toutes les fonctions nécessaires, ou sur plusieurs fichiers spécialisés. Nous avons choisi ici la méthode la plus compliquée : un seul fichier. Nous espérons que, de fait, l'autre méthode vous semblera plus facile...

Nous allons refaire le module de connexion de tout bon site dynamique. Celui-ci se divise principalement en quatre états possibles : identification, création de compte, récupération de mot de passe et affichage des informations de connexion.

Voici la manière dont nous les présentons :

Module d'identification :

Vous souhaitez créer un compte.
Vous avez déjà un compte, identifiez-vous :
Votre adresse e-mail
Votre mot de passe
 
Vous avez oublié votre mot de passe.

Module de création de compte :

Veuillez vous identifier correctement :
Votre adresse e-mail
Votre mot de passe
Retapez le mot de passe
 

Module de récupération de mot de passe :

Veuillez indiquer l'adresse e-mail utilisée lors de votre inscription: votre mot de passe vous y sera envoyé.
Votre adresse e-mail
 

Module d'affichage des informations de connexion :

Vous êtes connecté(e) avec l'adresse e-mail "gloups@jesuisunpoisson.ru".
Souhaitez-vous vous déconnecter ?

Plus quelques messages annonçant la complétion d'une action...

Etant donné que ces quatre interfaces sont issues du même fichier, le HTML proviendra d'une même fonction, affichage(), qui prendre en charge les tests de base permettant de rediriger vers telle ou telle portion du code. Cette fonction principale sera encadrée par notre "modèle de document" HTML :

<html>
  <head>
    <title>JDNetShop</title>
  </head>
  <body bgcolor="#FFFFFF">
    <?=affichage();?>
  </body>
</html>

Les formulaires utilisés dans nos trois premières interfaces sont assez simples. Voici leurs entêtes et noms de champs :

<form method="post" action="<?=$_SERVER['PHP_SELF'];?>" name="identification">
  <input type="hidden" name="identifier" value="ok">
(...)
  <td>Votre adresse e-mail</td>
  <td>
    <input type="text" name="idMail" maxlength="100">
  </td>
</tr>
<tr>
  <td>Votre mot de passe</td>
  <td>
    <input type="password" name="idMDP" maxlength="10">
  </td>
(...)

<form method="post" action="<?=$_SERVER['PHP_SELF'];?>" name="creationCompte">
  <input type="hidden" name="inscription" value="ok">
(...)
  <td>Votre adresse e-mail</td>
  <td>
    <input type="text" name="creerIdMail" maxlenght="100">
  </td>
</tr>
<tr>
  <td>Votre mot de passe</td>
  <td>
    <input type="password" name="creerIdPass1" maxlength="10">
(...)

<form method="post" action="<?=$_SERVER['PHP_SELF'];?>" name="recuperation">
  <input type="hidden" name="recuperer" value="ok">
(...)
  <td>Votre adresse e-mail</td>
  <td>
    <input type="text" name="recupMail" maxlength="100">
  </td>
(...)

Forums
* Discutez en sur les forums

Voilà pour nos interfaces HTML. En conséquence, vous pouvez voir que notre base de données est réduite à sa plus simple expression :

CREATE TABLE `user` (
  `adressemail` varchar(100) NOT NULL default '',
  `motdepasse` varchar(10) NOT NULL default '',
  PRIMARY KEY (`adressemail`)
  ) TYPE=MyISAM;

Page 1 | 2 | 3

 
[ Xavier BorderieJDNet
 
Accueil | Haut de page