SlideShare uma empresa Scribd logo
1 de 7
Baixar para ler offline
PHP5 / Mysql
Création d'une authentification pour un site internet
Session, base de données, php
I. Présentation
Objectifs :
L'objectif de ce tutoriel est de créer une page d'authentification pour un site internet et de protéger certaines pages du
site.
Les identifiants et mots de passe seront stockés dans une base de données.
Logiciels utilisés pour ces services :
– Apache 2/PhP5
– Mysql-server
– Phpmyadmin
II. Création de la base de données
L'objectif ici est de créer une base de données pour le site avec une table « users » qui stockera les identifiants et mots
de passe des comptes utilisateurs.
Pour cela, il faut se rendre sur l'interface de phpmyadmin sur le serveur. Http://ip_serveur/phpmyadmin.
La première étape consiste à créer une base de donnée « MonSite » dans laquelle sera stocké les différentes tables liées
au site dont la table « users ».
Une fois cette base créée, il nous faut pour atteindre notre objectif, créer une table « users » qui aura 3 champs : l'id
utilisateur, le login et le mot de passe.
Nous avons besoin d'un champ de type Integer pour l'id de l'utilisateur avec l'AUTO INCREMENT et l'Inedx à
PRIMARY, d'un champ login de type Varchar 100 (chaine de caractères) pour le login puis d'un champ password de
type Varchar 100 pour stocker les mots de passes :
Maintenant que nous avons créé notre base et note table users, il nous reste à créer un compte utilisateur du serveur
Mysql pour que le script php puisse lire les informations de la base.
Pour cela il faut retourner à la page d'accueil de phpmyadmin (petite mainson dans le menu de gauche) et cliquer sur
Privilèges en haut.
Il faut maintenant cliquer sur Ajouter un utilisateur :
Nous allons saisir les informations du compte, dans l'exemple : login « access_site » et password « motdepasse »
Puis cliquer sur Exécuter.
Sur la nouvelle page dans la partie « Priviles spécifiques à une base de données » nous allons sélectionner la base
« MonSite ».
Puis enfin nous allons sélectionner SELECT, INSERT, UPDATE de DELETE
Après avoir cliqué sur Exécuter, notre base de données est prête et nous avons un utilisateur pour s'y connecter et qui
peut lire les informations contenues dans la base de notre site.
III. Création de la partie PHP5 / HTML
Ce dont nous avons besoin c'est d'un formulaire d'authentification, d'un système de vérification, d'un moyen de se
connecter à la base de données, d'un formulaire d'ajout de compte et d'un moyen pour vérifier si l'utilisateur s'est
authentifié avant d'afficher la page.
Commençons par le début du commencement le formulaire d'authentification. Ce formulaire appellera le script auth.php
Page : auth.html
<html>
<head><title>Authentification requise</title></head>
<body>
<center>
<h2>Merci de vous authentifier</h2>
<form action="auth.php">
<table border="0" width="70%">
<tr>
<td><center>Nom d'utilisateur : </center></td>
<td><center><input type="text" name="login"/><center></td>
</tr>
<tr>
<td><center>Mot de passe : </center></td>
<td><center><input type="password" name="password"
/></center></td>
</tr>
</table>
<input type="submit" value="Valider" />
</form>
</center>
</body>
<html>
Il nous faut aussi maintenant un formulaire pour créer les comptes utilisateurs (qui seront stockés dans la table
« users »). Ce formulaire appellera le script d'ajout « add_user.php ».
Page : add_user.php
<html>
<head><title>Création de compte utilisateur</title></head>
<body>
<center>
<h2>Merci de saisir les identifiants du compte</h2><br /><br />
<form action="add_user.php">
<table border="0" width="30%">
<tr>
<td><center>Nom d'utilisateur : </center></td>
<td><center><input type="text" name="login"/><center></td>
</tr>
<tr>
<td><center>Mot de passe : </center></td>
<td><center><input type="password" name="password"
/></center></td>
</tr>
</table><br /><br />
<input type="submit" value="Valider" />
</form>
</center>
</body>
<html>
Maintenant que la partie html est terminée il nous reste la partie php. Cette partie sera composée de 4 fichiers :
– le fichier auth.php qui vérifiera les informations saisies par l'utilisateur
– le fichier add_user.php qui permettra d'ajouter les nouveaux utilisateurs
– un fichier fonction.php qui contiendra la fonction de connexion à la base de données et d'exécution des
requètes sql.
– Un fichier conf.site qui contiendra les informations de connexion à la base de données.
Commençons par le fichier conf.site. Ce fichier doit contenir les information d'accès à la base de données (nom
d'utilisateur, mot de passe, adresse ip du serveur, nom de la base de données).
Fichier conf.site :
<?
$BDD_hote="localhost";
$BDD_nmDB="MonSite";
$BDD_user="acces_site";
$BDD_pass="motdepasse";
?>
Avant de nous occuper des scripts d'ajout de compte et d'authentification, il nous reste le fichier fonctions.php à créer
qui contiendra les fonctions d'exécutions des requètes.
Fichier fonctions.php
<?
// Fonction d'exécution des requètes SQL
function sql($request)
{
global $bdd;
if(strrchr($request, 'SELECT'))
{
$req = $bdd->query($request);
}
else
{
$bdd->exec($request);
}
if(!empty($req))
{
while ($data = $req->fetch())
{
$res[] = $data;
}
return $res;
}
else
{
return false;
}
}
?>
Avant de créer le fichier auth.php pour gérer les authentification, nous allons créer le fichier add_user.php pour ajouter
un premier utilisateur de notre site dans notre base de données afin de pouvoir par la suite tester la page
d'authentification.
Fichier add_user.php
<?
// Fichier add_user.php
// On intègre les informations de connexion à la base de données ainsi que le fichier (ou librairie
fonctions.php)
include("conf.site");
include("fonctions.php");
// On intialise la connexion à la base de données
$bdd = new PDO('mysql:host='.$BDD_hote.';dbname='.$BDD_nmDB, $BDD_user, $BDD_pass);
// On récupère ce que l'utilisateur à saisi, si il n'a rien saisi (login ou mot de passe) on le renvoi sur la page de
création de compte
if(isset($_REQUEST['login']) && isset($_REQUEST['password']))
{
// Le formulaire précédent a été bien rempli
// On prépare la requète SQL pour enregistrer l'utilisateur
$requete="INSERT INTO `MonSite`.`users` (`id`, `login`, `password`) VALUES (NULL, '".
$_REQUEST['login']."', '".md5($_REQUEST['password'])."');";
// Ici md5 permet de crypter le mot de passe et de le stocker crypté dans la base de données
// On exécute la requete grace à la fonction sql présente dans le fichier fonctions.php
sql($requete);
// On prévient que le compte à bien été créé
echo "Compte ajouté a la base";
// On pourrait aussi renvoyer vers une page de confirmation par
// header("location : confirmation.html");
}
else
{
// Le formulaire n'est pas complet
// On renvoit vers la page précédente
header("location : add_user.html");
}
?>
Pour tester notre ajout de compte il suffit d'aller dans un navigateur à l'adresse
http://ipduserveur/monsite/add_user.html, d'ajouter un compte puis de vérifier grace à phpmyadmin si nous avons bien
un nouvel utilisateur dans notre table users.
Maintenant que nous avons pu ajouter un compte à notre base « users », nous allons pouvoir créer notre fichier auth.php
qui se chargera de comparer les informations saisies par l'utilisateur et les informations saisies dans la base de données.
Fichier auth.php
<?
//On prépare l'utilisation des variables de fonctions (variable qui sont stockées sur le serveur pour chaque
session ouverte)
session_start();
// Fichier auth.php
// On intègre les informations de connexion à la base de données ainsi que le fichier (ou librairie
fonctions.php)
include("conf.site");
include("fonctions.php");
// On intialise la connexion à la base de données
$bdd = new PDO('mysql:host='.$BDD_hote.';dbname='.$BDD_nmDB, $BDD_user, $BDD_pass);
// On récupère ce que l'utilisateur à saisi, si il n'a rien saisi (login ou mot de passe) on le renvoi sur la page de
création de compte
if(isset($_REQUEST['login']) && isset($_REQUEST['password']))
{
// Si l'utilisateur à rempli tous les champs on vérifie ce qu'il à saisit
// En recherchant dans la base de donner, un login et un mot de passe crypté correspondant à ce qu'il
à saisi.
// Si on a pas de réponse, alors il y a une erreur d'authentification
// Sinon l'utilisateur a réussi à s'authentifier
$requete = "SELECT * FROM users WHERE `login`='".$_REQUEST['login']."' AND
`password`='".md5($_REQUEST['password'])."'";
if(sql($requete))
{
// Nous avons bien le bon utilisateur
// Nous créons la variable de session
$_SESSION['auth']="AUTH : OK";
echo "Vous êtes authentifié";
}
else
{
// Nous n'avons pas les bonnes informations
// On renvoi vers la page d'authentification
header("location: auth.html");
}
}
else
{
// Formulaire incomplet
// On renvoit vers la page précédente
header("location: auth.html");
}
?>
Pour tester notre authentification, il nous suffit d'aller sut l'adresse http://ipduserveur/monsite/auth.html, puis d'utiliser
les informations d'authentifications de l'utilisateur que nous avons créé à l'aide de notre formulaire précédemment.
Enfin pour protéger une page d'un site il nous suffira de vérifier en haut de chaque page si nous avons une session
ouverte ou pas pour le site à l'aide du code suivant :
<?
session_start();
if(!isset($_SESSION['auth']))
{
header("location:auth.html");
}
?>
Ce code en haut de chaque page vérifie si nous avons une session web ouverte sur le serveur avec notre variable de
session, sinon il nous renvoit directement sur la page d'authentification.
Il faut rajouter ce morceau de code sur la page add_user.html ainsi que tout en haut de add_user.php.
Guillaume Evain – 2011
contact@evain.info
http://www.evain.info
+33 / 0 - 6-21-53-56-81

Mais conteúdo relacionado

Destaque

Construcción de la tecnología educativa
Construcción de la tecnología educativaConstrucción de la tecnología educativa
Construcción de la tecnología educativaHECJ
 
P.tipos de redes
P.tipos de redesP.tipos de redes
P.tipos de redesrgemelo
 
015 emulación oct. 05 de 2010
015 emulación oct. 05 de 2010015 emulación oct. 05 de 2010
015 emulación oct. 05 de 2010Noly Manuel Lopez
 
Evaluación del entorno económico del mercado canadiense y chileno, para la in...
Evaluación del entorno económico del mercado canadiense y chileno, para la in...Evaluación del entorno económico del mercado canadiense y chileno, para la in...
Evaluación del entorno económico del mercado canadiense y chileno, para la in...Johnochoa
 
Guía Casa de Vidas - Sesión no.4
Guía Casa de Vidas - Sesión no.4Guía Casa de Vidas - Sesión no.4
Guía Casa de Vidas - Sesión no.4Miguel Rivera
 
Agentes moviles y computacion obicua
Agentes moviles y computacion obicuaAgentes moviles y computacion obicua
Agentes moviles y computacion obicualopezcamilo
 
Effectuer un achat (Artiste independant / Particuliers)
Effectuer un achat (Artiste independant / Particuliers)Effectuer un achat (Artiste independant / Particuliers)
Effectuer un achat (Artiste independant / Particuliers)nextelevel
 
#et6 - 5 visions de l'etourisme
#et6 - 5 visions de l'etourisme#et6 - 5 visions de l'etourisme
#et6 - 5 visions de l'etourismeLudovic Dublanchet
 
Inteligencia emocional y comunicación
Inteligencia emocional  y comunicaciónInteligencia emocional  y comunicación
Inteligencia emocional y comunicaciónbc16alcantara
 
Las reglas del trading,finalizado
Las reglas del trading,finalizadoLas reglas del trading,finalizado
Las reglas del trading,finalizadoJose Guerra
 
Deber clases de problemas
Deber  clases de problemasDeber  clases de problemas
Deber clases de problemasDolo .
 
Informe del reglamento
Informe del reglamentoInforme del reglamento
Informe del reglamentoJEIMY ZABALA
 
Aspectos generales de la práctica docente nº3
Aspectos generales de la práctica docente nº3Aspectos generales de la práctica docente nº3
Aspectos generales de la práctica docente nº3aida
 
Le+cinéma..iria
Le+cinéma..iriaLe+cinéma..iria
Le+cinéma..iriaArmelle
 
Comportements et attentes des internautes
Comportements et attentes des internautesComportements et attentes des internautes
Comportements et attentes des internautesLudovic Dublanchet
 
Partager l'instant présent sur les réseaux sociaux
Partager l'instant présent sur les réseaux sociauxPartager l'instant présent sur les réseaux sociaux
Partager l'instant présent sur les réseaux sociauxSamir SIRAT
 
Ejercicios del 71 al 84
Ejercicios del 71 al 84Ejercicios del 71 al 84
Ejercicios del 71 al 84NORMA
 
la historia de burro
la historia de burrola historia de burro
la historia de burrolmedinapa
 

Destaque (20)

Construcción de la tecnología educativa
Construcción de la tecnología educativaConstrucción de la tecnología educativa
Construcción de la tecnología educativa
 
P.tipos de redes
P.tipos de redesP.tipos de redes
P.tipos de redes
 
015 emulación oct. 05 de 2010
015 emulación oct. 05 de 2010015 emulación oct. 05 de 2010
015 emulación oct. 05 de 2010
 
Evaluación del entorno económico del mercado canadiense y chileno, para la in...
Evaluación del entorno económico del mercado canadiense y chileno, para la in...Evaluación del entorno económico del mercado canadiense y chileno, para la in...
Evaluación del entorno económico del mercado canadiense y chileno, para la in...
 
Guía Casa de Vidas - Sesión no.4
Guía Casa de Vidas - Sesión no.4Guía Casa de Vidas - Sesión no.4
Guía Casa de Vidas - Sesión no.4
 
Agentes moviles y computacion obicua
Agentes moviles y computacion obicuaAgentes moviles y computacion obicua
Agentes moviles y computacion obicua
 
Effectuer un achat (Artiste independant / Particuliers)
Effectuer un achat (Artiste independant / Particuliers)Effectuer un achat (Artiste independant / Particuliers)
Effectuer un achat (Artiste independant / Particuliers)
 
#et6 - 5 visions de l'etourisme
#et6 - 5 visions de l'etourisme#et6 - 5 visions de l'etourisme
#et6 - 5 visions de l'etourisme
 
Inteligencia emocional y comunicación
Inteligencia emocional  y comunicaciónInteligencia emocional  y comunicación
Inteligencia emocional y comunicación
 
Las reglas del trading,finalizado
Las reglas del trading,finalizadoLas reglas del trading,finalizado
Las reglas del trading,finalizado
 
Deber clases de problemas
Deber  clases de problemasDeber  clases de problemas
Deber clases de problemas
 
ri%2028%20e%20simonoff
ri%2028%20e%20simonoffri%2028%20e%20simonoff
ri%2028%20e%20simonoff
 
Informe del reglamento
Informe del reglamentoInforme del reglamento
Informe del reglamento
 
Aspectos generales de la práctica docente nº3
Aspectos generales de la práctica docente nº3Aspectos generales de la práctica docente nº3
Aspectos generales de la práctica docente nº3
 
Le+cinéma..iria
Le+cinéma..iriaLe+cinéma..iria
Le+cinéma..iria
 
Comportements et attentes des internautes
Comportements et attentes des internautesComportements et attentes des internautes
Comportements et attentes des internautes
 
Mtra clementina
Mtra clementinaMtra clementina
Mtra clementina
 
Partager l'instant présent sur les réseaux sociaux
Partager l'instant présent sur les réseaux sociauxPartager l'instant présent sur les réseaux sociaux
Partager l'instant présent sur les réseaux sociaux
 
Ejercicios del 71 al 84
Ejercicios del 71 al 84Ejercicios del 71 al 84
Ejercicios del 71 al 84
 
la historia de burro
la historia de burrola historia de burro
la historia de burro
 

Semelhante a File manager authentification

démonstration code source site web ecole.docx
démonstration code source site web ecole.docxdémonstration code source site web ecole.docx
démonstration code source site web ecole.docxVincentBweka
 
11. Autorisations.pptx
11. Autorisations.pptx11. Autorisations.pptx
11. Autorisations.pptxZinebJbilou
 
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel phpKhadim Mbacké
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDOAbdoulaye Dieng
 
Certifs x509
Certifs x509Certifs x509
Certifs x509hamduvski
 
JWT-spring-boot-avancer.pdf
JWT-spring-boot-avancer.pdfJWT-spring-boot-avancer.pdf
JWT-spring-boot-avancer.pdfJaouad Assabbour
 
Application web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapApplication web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapBassem ABCHA
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Microsoft
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Microsoft
 
Liason Sage crm avec Sage Multi Devis
Liason Sage crm avec Sage Multi DevisLiason Sage crm avec Sage Multi Devis
Liason Sage crm avec Sage Multi DevisFred Canevet
 
Tableau de bord Yammer sous SharePoint 2013
Tableau de bord Yammer sous SharePoint 2013Tableau de bord Yammer sous SharePoint 2013
Tableau de bord Yammer sous SharePoint 2013Philippe Sfeir
 
ASP.NET from Zero to Hero
ASP.NET from Zero to HeroASP.NET from Zero to Hero
ASP.NET from Zero to HeroCellenza
 
PHP (Partie II) Par Mahdi Ben Alaya
PHP (Partie II) Par Mahdi Ben AlayaPHP (Partie II) Par Mahdi Ben Alaya
PHP (Partie II) Par Mahdi Ben AlayaMahdi Ben Alaya
 
laravel.sillo.org-Cours Laravel 10 les bases la validation.pdf
laravel.sillo.org-Cours Laravel 10  les bases  la validation.pdflaravel.sillo.org-Cours Laravel 10  les bases  la validation.pdf
laravel.sillo.org-Cours Laravel 10 les bases la validation.pdfHeartKing10
 
Guide pratique openssl sous debian
Guide pratique openssl sous debianGuide pratique openssl sous debian
Guide pratique openssl sous debianyahyaf10
 

Semelhante a File manager authentification (20)

Mpdf 9
Mpdf 9Mpdf 9
Mpdf 9
 
démonstration code source site web ecole.docx
démonstration code source site web ecole.docxdémonstration code source site web ecole.docx
démonstration code source site web ecole.docx
 
Crud+tutorial+fr
Crud+tutorial+frCrud+tutorial+fr
Crud+tutorial+fr
 
11. Autorisations.pptx
11. Autorisations.pptx11. Autorisations.pptx
11. Autorisations.pptx
 
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel php
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
 
Certifs x509
Certifs x509Certifs x509
Certifs x509
 
JWT-spring-boot-avancer.pdf
JWT-spring-boot-avancer.pdfJWT-spring-boot-avancer.pdf
JWT-spring-boot-avancer.pdf
 
Chap2
Chap2Chap2
Chap2
 
Application web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapApplication web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrap
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
 
Liason Sage crm avec Sage Multi Devis
Liason Sage crm avec Sage Multi DevisLiason Sage crm avec Sage Multi Devis
Liason Sage crm avec Sage Multi Devis
 
Tableau de bord Yammer sous SharePoint 2013
Tableau de bord Yammer sous SharePoint 2013Tableau de bord Yammer sous SharePoint 2013
Tableau de bord Yammer sous SharePoint 2013
 
ASP.NET from Zero to Hero
ASP.NET from Zero to HeroASP.NET from Zero to Hero
ASP.NET from Zero to Hero
 
Sécuriser son site wordpress
Sécuriser son site wordpressSécuriser son site wordpress
Sécuriser son site wordpress
 
PHP (Partie II) Par Mahdi Ben Alaya
PHP (Partie II) Par Mahdi Ben AlayaPHP (Partie II) Par Mahdi Ben Alaya
PHP (Partie II) Par Mahdi Ben Alaya
 
laravel.sillo.org-Cours Laravel 10 les bases la validation.pdf
laravel.sillo.org-Cours Laravel 10  les bases  la validation.pdflaravel.sillo.org-Cours Laravel 10  les bases  la validation.pdf
laravel.sillo.org-Cours Laravel 10 les bases la validation.pdf
 
Guide pratique openssl sous debian
Guide pratique openssl sous debianGuide pratique openssl sous debian
Guide pratique openssl sous debian
 
Mpdf 3
Mpdf 3Mpdf 3
Mpdf 3
 

File manager authentification

  • 1. PHP5 / Mysql Création d'une authentification pour un site internet Session, base de données, php I. Présentation Objectifs : L'objectif de ce tutoriel est de créer une page d'authentification pour un site internet et de protéger certaines pages du site. Les identifiants et mots de passe seront stockés dans une base de données. Logiciels utilisés pour ces services : – Apache 2/PhP5 – Mysql-server – Phpmyadmin II. Création de la base de données L'objectif ici est de créer une base de données pour le site avec une table « users » qui stockera les identifiants et mots de passe des comptes utilisateurs. Pour cela, il faut se rendre sur l'interface de phpmyadmin sur le serveur. Http://ip_serveur/phpmyadmin. La première étape consiste à créer une base de donnée « MonSite » dans laquelle sera stocké les différentes tables liées au site dont la table « users ». Une fois cette base créée, il nous faut pour atteindre notre objectif, créer une table « users » qui aura 3 champs : l'id utilisateur, le login et le mot de passe.
  • 2. Nous avons besoin d'un champ de type Integer pour l'id de l'utilisateur avec l'AUTO INCREMENT et l'Inedx à PRIMARY, d'un champ login de type Varchar 100 (chaine de caractères) pour le login puis d'un champ password de type Varchar 100 pour stocker les mots de passes : Maintenant que nous avons créé notre base et note table users, il nous reste à créer un compte utilisateur du serveur Mysql pour que le script php puisse lire les informations de la base. Pour cela il faut retourner à la page d'accueil de phpmyadmin (petite mainson dans le menu de gauche) et cliquer sur Privilèges en haut. Il faut maintenant cliquer sur Ajouter un utilisateur : Nous allons saisir les informations du compte, dans l'exemple : login « access_site » et password « motdepasse » Puis cliquer sur Exécuter. Sur la nouvelle page dans la partie « Priviles spécifiques à une base de données » nous allons sélectionner la base « MonSite ».
  • 3. Puis enfin nous allons sélectionner SELECT, INSERT, UPDATE de DELETE Après avoir cliqué sur Exécuter, notre base de données est prête et nous avons un utilisateur pour s'y connecter et qui peut lire les informations contenues dans la base de notre site. III. Création de la partie PHP5 / HTML Ce dont nous avons besoin c'est d'un formulaire d'authentification, d'un système de vérification, d'un moyen de se connecter à la base de données, d'un formulaire d'ajout de compte et d'un moyen pour vérifier si l'utilisateur s'est authentifié avant d'afficher la page. Commençons par le début du commencement le formulaire d'authentification. Ce formulaire appellera le script auth.php Page : auth.html <html> <head><title>Authentification requise</title></head> <body> <center> <h2>Merci de vous authentifier</h2> <form action="auth.php"> <table border="0" width="70%"> <tr> <td><center>Nom d'utilisateur : </center></td> <td><center><input type="text" name="login"/><center></td> </tr> <tr> <td><center>Mot de passe : </center></td> <td><center><input type="password" name="password" /></center></td> </tr> </table> <input type="submit" value="Valider" /> </form> </center> </body> <html>
  • 4. Il nous faut aussi maintenant un formulaire pour créer les comptes utilisateurs (qui seront stockés dans la table « users »). Ce formulaire appellera le script d'ajout « add_user.php ». Page : add_user.php <html> <head><title>Création de compte utilisateur</title></head> <body> <center> <h2>Merci de saisir les identifiants du compte</h2><br /><br /> <form action="add_user.php"> <table border="0" width="30%"> <tr> <td><center>Nom d'utilisateur : </center></td> <td><center><input type="text" name="login"/><center></td> </tr> <tr> <td><center>Mot de passe : </center></td> <td><center><input type="password" name="password" /></center></td> </tr> </table><br /><br /> <input type="submit" value="Valider" /> </form> </center> </body> <html> Maintenant que la partie html est terminée il nous reste la partie php. Cette partie sera composée de 4 fichiers : – le fichier auth.php qui vérifiera les informations saisies par l'utilisateur – le fichier add_user.php qui permettra d'ajouter les nouveaux utilisateurs – un fichier fonction.php qui contiendra la fonction de connexion à la base de données et d'exécution des requètes sql. – Un fichier conf.site qui contiendra les informations de connexion à la base de données. Commençons par le fichier conf.site. Ce fichier doit contenir les information d'accès à la base de données (nom d'utilisateur, mot de passe, adresse ip du serveur, nom de la base de données). Fichier conf.site : <? $BDD_hote="localhost"; $BDD_nmDB="MonSite"; $BDD_user="acces_site"; $BDD_pass="motdepasse"; ?>
  • 5. Avant de nous occuper des scripts d'ajout de compte et d'authentification, il nous reste le fichier fonctions.php à créer qui contiendra les fonctions d'exécutions des requètes. Fichier fonctions.php <? // Fonction d'exécution des requètes SQL function sql($request) { global $bdd; if(strrchr($request, 'SELECT')) { $req = $bdd->query($request); } else { $bdd->exec($request); } if(!empty($req)) { while ($data = $req->fetch()) { $res[] = $data; } return $res; } else { return false; } } ?> Avant de créer le fichier auth.php pour gérer les authentification, nous allons créer le fichier add_user.php pour ajouter un premier utilisateur de notre site dans notre base de données afin de pouvoir par la suite tester la page d'authentification. Fichier add_user.php <? // Fichier add_user.php // On intègre les informations de connexion à la base de données ainsi que le fichier (ou librairie fonctions.php) include("conf.site"); include("fonctions.php"); // On intialise la connexion à la base de données $bdd = new PDO('mysql:host='.$BDD_hote.';dbname='.$BDD_nmDB, $BDD_user, $BDD_pass); // On récupère ce que l'utilisateur à saisi, si il n'a rien saisi (login ou mot de passe) on le renvoi sur la page de création de compte if(isset($_REQUEST['login']) && isset($_REQUEST['password'])) { // Le formulaire précédent a été bien rempli // On prépare la requète SQL pour enregistrer l'utilisateur $requete="INSERT INTO `MonSite`.`users` (`id`, `login`, `password`) VALUES (NULL, '". $_REQUEST['login']."', '".md5($_REQUEST['password'])."');"; // Ici md5 permet de crypter le mot de passe et de le stocker crypté dans la base de données // On exécute la requete grace à la fonction sql présente dans le fichier fonctions.php sql($requete); // On prévient que le compte à bien été créé echo "Compte ajouté a la base";
  • 6. // On pourrait aussi renvoyer vers une page de confirmation par // header("location : confirmation.html"); } else { // Le formulaire n'est pas complet // On renvoit vers la page précédente header("location : add_user.html"); } ?> Pour tester notre ajout de compte il suffit d'aller dans un navigateur à l'adresse http://ipduserveur/monsite/add_user.html, d'ajouter un compte puis de vérifier grace à phpmyadmin si nous avons bien un nouvel utilisateur dans notre table users. Maintenant que nous avons pu ajouter un compte à notre base « users », nous allons pouvoir créer notre fichier auth.php qui se chargera de comparer les informations saisies par l'utilisateur et les informations saisies dans la base de données. Fichier auth.php <? //On prépare l'utilisation des variables de fonctions (variable qui sont stockées sur le serveur pour chaque session ouverte) session_start(); // Fichier auth.php // On intègre les informations de connexion à la base de données ainsi que le fichier (ou librairie fonctions.php) include("conf.site"); include("fonctions.php"); // On intialise la connexion à la base de données $bdd = new PDO('mysql:host='.$BDD_hote.';dbname='.$BDD_nmDB, $BDD_user, $BDD_pass); // On récupère ce que l'utilisateur à saisi, si il n'a rien saisi (login ou mot de passe) on le renvoi sur la page de création de compte if(isset($_REQUEST['login']) && isset($_REQUEST['password'])) { // Si l'utilisateur à rempli tous les champs on vérifie ce qu'il à saisit // En recherchant dans la base de donner, un login et un mot de passe crypté correspondant à ce qu'il à saisi. // Si on a pas de réponse, alors il y a une erreur d'authentification // Sinon l'utilisateur a réussi à s'authentifier $requete = "SELECT * FROM users WHERE `login`='".$_REQUEST['login']."' AND `password`='".md5($_REQUEST['password'])."'"; if(sql($requete)) { // Nous avons bien le bon utilisateur // Nous créons la variable de session $_SESSION['auth']="AUTH : OK"; echo "Vous êtes authentifié"; } else { // Nous n'avons pas les bonnes informations // On renvoi vers la page d'authentification header("location: auth.html"); } } else { // Formulaire incomplet // On renvoit vers la page précédente header("location: auth.html"); } ?>
  • 7. Pour tester notre authentification, il nous suffit d'aller sut l'adresse http://ipduserveur/monsite/auth.html, puis d'utiliser les informations d'authentifications de l'utilisateur que nous avons créé à l'aide de notre formulaire précédemment. Enfin pour protéger une page d'un site il nous suffira de vérifier en haut de chaque page si nous avons une session ouverte ou pas pour le site à l'aide du code suivant : <? session_start(); if(!isset($_SESSION['auth'])) { header("location:auth.html"); } ?> Ce code en haut de chaque page vérifie si nous avons une session web ouverte sur le serveur avec notre variable de session, sinon il nous renvoit directement sur la page d'authentification. Il faut rajouter ce morceau de code sur la page add_user.html ainsi que tout en haut de add_user.php. Guillaume Evain – 2011 contact@evain.info http://www.evain.info +33 / 0 - 6-21-53-56-81