NB : par sécurité, changez le nom du dossier "ADMIN" (trop évident).
NB : le code de validation est :
- stocké dans une variable de session.
- généré aléatoirement à chaque nouvelle identification.
- n'est valide qu'une fois.
_protect.php | contient vos identifiants et mots de passe |
index.php | formulaire d'identification |
_protectpage.php | protection des pages |
vos pages à protéger | scripts à inclure |
_deconnexion.php |
déconnexion et retour à votre site |
<?php // partie commune (cookie ou session) session_start(); // ------------------------------------------------------------------------- $utilisateur = "IDENTIFIANT"; // Remplacer IDENTIFIANT par votre identifiant (au choix) $mot_de_passe = "MOTDEPASSE"; // Remplacer MOTDEPASSE par votre mot de passe (au choix) // ------------------------------------------------------------------------- // si le visiteur (administrateur ou collaborateur) a validé le formulaire $login = ''; $pass = ''; if (!empty($_POST['login']) && !empty($_POST['pass'])) { $login = filter_var($_POST['login'], FILTER_SANITIZE_STRING); $pass = filter_var($_POST['pass'], FILTER_SANITIZE_STRING); } // ------------------------------------------------------------------------- // création d un code de validation aléatoire // ------------------------------------------------------------------------- $tableau = array("0","1","2","3","4","5","6","7","8","9", "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z", "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"); // Tirage aléatoire de 16 caracteres $taille = 16; $valeurs_aleatoires = array_rand($tableau, $taille); // generation du code $code_valide = ''; foreach($valeurs_aleatoires as $i) { $code_valide = $code_valide . $tableau[$i]; } // ------------------------------------------------------------------------- // On stocke le code_valide sur le serveur dans une variable de session $_SESSION["CODEVALIDE"] = $code_valide; // ------------------------------------------------------------------------- ?>
<?php // (suite avec COOKIE) // ------------------------------------------------------ // Si le login et le mot de passe sont corrects if ($login == $utilisateur && $pass == $mot_de_passe) { // copie du code dans un cookie "perso" setcookie ("MONCOOKIE",$code_valide,time()+3600); // ------------------------------------------------------ } else { setcookie ("MONCOOKIE", ""); } ?>
<?php // (suite avec SESSION) // ------------------------------------------------------ // Si le login et le mot de passe sont corrects if ($login == $utilisateur && $pass == $mot_de_passe) { // copie du code dans une variable de session "perso" $_SESSION["MASESSION"] = $code_valide; // ------------------------------------------------------ } else { $_SESSION["MASESSION"] = ''; } ?>
<?php // (début avec COOKIE) include("_protect.php"); // ------------------------------------------------------ // Accès autorisé si identifié if (!empty($_SESSION['CODEVALIDE']) && md5($_COOKIE['MONCOOKIE']) == md5($_SESSION["CODEVALIDE"])) { // Redirection vers le menu de l "ADMIN" header("Location: MONmenuADMIN.php"); exit; } // ------------------------------------------------------ // sinon affichage du formulaire d'identification ?>
<?php // (début avec SESSION) include("_protect.php"); // ------------------------------------------------------ // Accès autorisé si identifié if (!empty($_SESSION['CODEVALIDE']) && md5($_SESSION["MASESSION"]) == md5($_SESSION["CODEVALIDE"])) { // Redirection vers le menu de l "ADMIN" header("Location: MONmenuADMIN.php"); exit; } // ------------------------------------------------------ // sinon affichage du formulaire d'identification ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr"> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>index.php</title> </head> <body> <div align="center"> <form name="identification" method="post" action="index.php"> Identifiant : <input name="login" size="20" /><br /> Mot de passe : <input name="pass" type="password" size="20" /><br /> <input type="submit" value="Valider" /> </form> </div> </body> </html>
<?php // (avec COOKIE) session_start(); // ------------------------------------------------------ // comparaison avec le code de validation // si non identifie if (empty($_SESSION['CODEVALIDE']) || md5($_COOKIE['MONCOOKIE']) != md5($_SESSION['CODEVALIDE'])) { // redirection vers le formulaire d identification header("Location: index.php"); exit; } // ------------------------------------------------------ // si identifie, on continue ?>
<?php // (avec SESSION) session_start(); // ------------------------------------------------------ // comparaison avec le code de validation // si non identifie if (empty($_SESSION['CODEVALIDE']) || md5($_SESSION['MASESSION']) != md5($_SESSION['CODEVALIDE'])) { // redirection vers le formulaire d identification header("Location: index.php"); exit; } // ------------------------------------------------------ // si identifie, on continue ?>
Ajouter en tout début de chaque page à protéger :
<?php include("_protectpage.php") ; // ------------------------------------------------------------------- ?>
on insère le formulaire suivant (bouton de déconnexion) dans les pages protégées (ou dans son "menu admin") :
<form method="POST" action="_deconnexion.php"> <input type="submit" value="deconnexion" name="deconnexion"> </form>
<?php // (avec COOKIE) session_start(); // ------------------------------------------------------ // on vide/détruit le cookie "perso" et la session $_SESSION = array(); $session_name = session_name(); setCookie('monCookieNom'); // destruction du cookie // destruction des informations du cookie en mémoire unset($_COOKIE['monCookieNom']); session_destroy(); // Redirection vers le site header("Location: http://www.MONSITE.com"); exit; // ------------------------------------------------------ ?>
<?php // (avec SESSION) session_start(); // ------------------------------------------------------ // on vide/détruit les variables de session $_SESSION = array(); $session_name = session_name(); session_destroy(); // Redirection vers le site header("Location: http://www.MONSITE.com"); exit; // ------------------------------------------------------ ?>
Historique initial :
26 août 2008 14:53:43 : mise en page du tutoriel
26 août 2008 16:14:23 : mise en page (fin ?)
06 septembre 2008 11:18:35 : Ajout d'un code de validation généré aléatoirement. + actualisation du code
06 septembre 2008 11:29:48 : mise en page Word2007
06 septembre 2008 11:42:25 : -
06 septembre 2008 11:45:24 : -
14 mars 2009 09:10:18 : Mise a jour en fonction des commentaires.
14 mars 2009 09:17:56 : Mise a jour en fonction des commentaires.
14 mars 2009 09:24:56 : modification (3eme essai ...)
14 mars 2009 09:27:14 : Malgré plusieurs tentatives, mes MODIFICATIONS DU TUTO ne sont pas prises en compte .... Allez voir sur : http://www.asp-php.net/scripts/asp-php/proteger-page.php
19 mars 2009 20:05:41 : mise a jour
20 mars 2009 17:20:35 : maj