Un script de login basé sur PHP et MySQL

Ce tutorial explique comment créer un script basique de login. Vous pourrez ainsi créer aisément une zone membre.

Prérequis

Vous devez avoir les bases en HTML et PHP interfacé avec MySQL.

Création de la base de données

Exécuter le script SQL suivant, dans phpMyAdmin par exemple, pour créer la table membres:

CREATE TABLE membres (
-> user_name varchar(15) NOT NULL,
-> password varchar(32) NOT NULL,
-> PRIMARY KEY (user_name));

Cette table va stocker les informations sur les membres. Elle est composée de deux champs, user_name pour le login et password pour le mot de passe.
Nous allons de suite insérer un enregistrement afin de pouvoir tester notre script :

Exécuter le script SQL suivant :

INSERT INTO membres VALUES(‘test’, ‘test’);

Formulaire de login

Nous allons d’abord créer un simple formulaire HTML pour capturer les variables d’identifiaction :

Login.html 

<html>
<head>
<title>login.html</title>
</head>
<body>
<form name="login" method="post" action="validate.php">
Nom d'utilisateur:<input type="text" name="user_name"><br>
Mot de passe:<input type="password" name="password"><br>
<input type="submit" value="Envoyer">
</form>
</body>
</html>

Il est préférable d’utiliser method= »post », si vous ne voulez pas que l’utilisateur puisse mettre dans ses favoris une page sur laquelle il est identifié. Si vous utilisez method= »get » la page de confirmation aura l’adresse suivante : (i.e. « http://example.com/validate.php?username=test&password=test »). L’utilisateur pourra donc revenir sur cette page sans s’identifier à nouveau, ce qui peut être un trou de sécurité.

Une fois que les variables d’identification sont passées, nous allons les exploiter :

Validate.php 

<?php
session_start();
$db_user = 'mysql_username';
$db_pass = 'mysql_password';

//Connection à mysql et sélection de la base de données
$connection = mysql_connect('localhost', $db_user, $db_pass) or die(mysql_error());
mysql_select_db('votre_base', $connection) or die(mysql_error());

//Préparation de la requête
$query = "SELECT * FROM membres 
WHERE user_name='$user_name' AND password='$password'";

//exécution de la requête et récupération du nombre de résultats
$result = mysql_query($query, $connection);
$affected_rows = mysql_num_rows($result);

//S'il y a exactement un résultat, l'utilisateur est authentifié, sinon, on l'empêche d'entrer
if($affected_rows == 1) {
print 'Vous êtes authentifié';
//On ajoute l'utilisateur aux variables de session
$_SESSION['username'] = $user_name; }
else {
print 'Accès refusé';
}
?>

Nous aurions bien pu redirigé l’utilisateur authentifié vers une page, mais nous aurions eu un problème, l’utilisateur aurait dû s’identifier à nouveau pour aller vers une autre page de l’espace membre.Les sessions permettent de stocker l’information comme quoi l’utilisateur est déjà validé.

Script de vérification

Enfin nous allons faire un script de vérification à inclure au début de toutes les autres pages de l’espace membre grâce à la commande suivante :

<?php include(« VerifyLogin.php »;?>

VerifyLogin.php

<?php
        session_start();
        if(empty($_SESSION['username'])) {
               die('Une erreur est survenue. Soit vous ne vous êtes pas identifié, soit votre session a expiré.
                       Merci de <a href="login.php">vous identifier</a> à nouveau ou de contacter 
                       <a href="mailto:admin@example.com">l'administrateur</a>');
        }
?>

Voilà le script est fini.
Vous pouvez bien sûr ajouter des fonctionnalités :
- mot de passe perdu,
- nouvel utilisateur, 
- ...
et bien sûr l'inclure dans votre charte graphique.

Publié

dans

par