
En utilisant les notions de classe, et de session nous allons apprendre à authentifier un utilisateur, afin de lui permettre d'accéder à une page protégée.
La première étape va consister à réaliser notre formulaire d'authentification qui se trouvera sur cette page qu'on apellera :"index.php".
Cette page et volontairement simplifiée, j'y ai enlevé les éléments propres à xHTML, etc... On se retrouve donc avec un formulaire assez simple composé de deux champs "login" et "mdp" puis d'un bouton pour soumettre notre formulaire.
Les variables seront transmises avec la méthode post étant donné que faire apparaître un mot de passe en clair dans une URL ne serait pas très sécurisant (voir pas du tout^^).
On aurait pu concevoir ce tutorial sans l'utilisation de classe, mais dans une optique pour vous de pouvoir par la suite ajouter quelques fonctionnalités supplémentaires (gestion de compte, etc...) j'ai préférer choisir la programmation objet.
Voici notre classe que l'on nommera Identification et qui se retrouvera dans le fichier "class.Identification.php". Voici l'ossature de cette classe pour que vous puissiez y voir un peu plus clair avant de commencer:
Cette classe va donc posséder 3 méthodes (fonctions): Une qui nous permettra de nous connecter (en fonction de la variable $_POST passée en paramètre), une pour se déconnecter et enfin une dernière pour vérifier si l'on est bien connecté. Vous remarquerez aussi une méthode particulière : le constructeur (__construct) qui est éxécutée automatique dés que l'on instancie un objet de cette classe. Cette méthode ne fait ici rien de particulier si ce n'est démarrer une session qu'on réutilisera par la suite.
Nous allons donc maintenant remplir la méthode connexion (prenant en paramètre la superglobale $_POST). Voici son code:
Cette méthode va donc renvoyer true si l'utilisateur n'a rien rempli ou s'est bien connecté, sinon false si ses identifiants sont incorrects. Dans un premier temps il va falloir tester si le login est vide avec la fonction empty(). S'il ne l'est pas on éxécute le reste de notre fonction.
Ensuite nous nous connectons à une base de donnée pour vérifier le couple login/mdp. Pour cela on effectue une requête de type SELECT avec une condition WHERE ou les 2 paramètres doivent être respectées.

Pour vous connecter à votre base de données, vous avez besoin de vos identifiants. Je les ai donc placé dans un fichier config.php, qui correspond pour moi à ca:
La requête utilise 2 fonctions particulières:
Après avoir éxécuté notre requête et vérifié qu'elle nous renvoit bien une seule ligne. Nous initialisons notre variable superglobale de session en précisant aussi l'identifiant du connecté (cela peut être utile de le récupérer après dans les autres pages...). Enfin si tout s'est bien passé, nous redirigeons notre utilisateur vers la page protégée en question.
Il ne reste plus qu'à tester cette méthode dans notre page index.php, en n'oubliant pas d'inclure notre classe Identification, on en arrive à ceci:
Voilà tout ce que l'on à faire est d'afficher un message d'erreur si la méthode renvoit false :)
C'est bien gentil tout ça, mais ca n'empêche pour l'instant pas les gens d'accéder à notre page protege.php en y accédant en tapant l'URL. C'est là qu'intervient notre méthode verificationAcces().
Cette méthode est en fait très simple nous testons juste si la variable $_SESSION['connecte'] vaut bien true.
Enfin dans notre page protege.php, il suffit simplement d'instancier la classe Identification et d'éxécuter la méthode verificationAcces() comme ceci:
Il nous manque plus que la méthode deconnexion() à réaliser. Cette méthode est relativement simple, elle utilise 2 fonctions: session_destroy(), qui détruit la session et unset() qui vide et détruit une variable :
Pour éxécuter cette méthode vous l'avez peut être remarqué dans le script précédent, j'utilise une URL qui pointe vers index.php avec une variable de types GET : index.php?deconnexion=true.
Enfin je teste dans ma page si la variable $_GET['deconnexion'] == true auquel cas, il faudra éxécuter notre méthode.
Ce tutorial touche à sa fin, n'hésitez pas à laisser des commentaires, si vous souhaitez quelques éclaircissements ;).
Merci pour le tuto