Implanter une section sécurisée sur votre site avec PHP

Publié le 14 mars 2008 par Dave Lizotte
Depuis les débuts de PcKULT.NET, j'ai reçu beaucoup de courriels concernant la difficulté pour la plupart des débutants de créer une section sécurisée pour leur plateforme web pour les raisons suivantes :
  1. Incapacité de maintenir les sessions de connexion si l'usager visite une nouvelle page.
  2. Incapacité de rediriger un usager à une page spécifique après la connexion au système.
C'est pourquoi j'ai déniché pour vous un système de sécurité PHP à intégrer à votre projet en quelques minutes.
Télécharger le script PHP
Avant de démarrer, regardons ce que contiennent l'archives :

 
  • login-form.php - Contiens le formulaire de login contenant 2 champs (email et mot de passe).
  • common-functions.php - Contiens la fonction de redirection et de nettoyage des champs de saisie afin d'éviter les injections de code dans les champs texte du formulaire.
  • config.php - Contiens la connexion à la base de données.
  • login.php - Contient une requête SQL permettant de vérifier si l'usager existe ainsi que la fonction de création de la session PHP si l'usager est correctement identifié.
  • logout.php - Contiens la fonction de suppression de la session si vous êtes connecté.
  Dans ce script, nous supposons que votre base de données gère les usagers avec leur email. Dans le cas ou l'usager entre un mot de passe ou un email incorrect, un message d'erreur est alors affiché:
...autrement, si l'authentification est réussie, un lien déconnexion (logout) apparait:


Étape 1: Inclure login-form.php

Créer une nouvelle page PHP nommé index.php dans le même répertoire que login-form.php. Ouvrez index.php et ajoutez-lui entre les balises <body> le code suivant :
  <?php include('login-form.php')?>
Ceci aura pour effet d'afficher le formulaire de connexion sur votre page. Par la suite, ajoutez-lui la ligne qui suit dans le haut de votre page index.php et assurez-vous que cette ligne soit placée avant toute autre ligne de code dans votre page sinon, la session ne fonctionnera pas:
  <?php session_start(); ?>


Étape 2: Modifier config.php

Modifier les informations de connexion à la base de données dans le fichier config.php:

Étape 3: Modifier login.php

Vous pouvez modifier ce fichier dans le cas ou votre table ne s'appellerait pas « USER » ou que les champs « email » et « password » ne sont pas présent dans votre table. Ajuster donc la requête en fonction de votre table.
 
L'utilisation de la clé primaire pour stocker une session est une bonne pratique en PHP. Si votre clé est différente de « ID_USER_PK », modifier celle-ci en fonction de la vôtre.
  Vous pouvez aussi modifier l'adresse de redirection lorsqu'un usager s'authentifie ou lorsque celui-ci saisit un mauvais nom d'usager ou mot de passe.
 

Étape 4: Modifier l'adresse de redirection lors de la déconnexion dans logout.php

Dernière étape, modifier l'adresse de redirection lorsqu'un usager clique sur le lien déconnexion (Logout):
 
C'est tout! Si vous avez bien ajusté les pages, le tout devrait fonctionner à merveille. Si vous avez des questions, n'hésitez pas.