Trackin
Administration sur PHP
PHP - ADMINISTRER en ligne : PROTECTION des PAGES
Principe :
- Création d'un dossier (ADMIN) dans lequel on met ses pages d'administration.
- Accès à l'"espace d'administration en ligne" : www.MONSITE.com/ADMIN
- ADMIN/index.php : formulaire d'identification par identifiant et mot de passe.
Ici : un accès à 1 niveau (webmestre)
- Validation par Cookie OU Session au choix,
- Comparaison avec un code de validation généré aléatoirement,
- L'accès aux pages protégées est alors validé.
NB : par sécurité, changez le nom du dossier "ADMIN" (trop évident).
NB : le code de validation est stocké dans une variable de session.
Il est généré aléatoirement à chaque nouvelle identification.
Il n'est valide qu'une fois.
Les fichiers nécessaires (dossier ADMIN) :
_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 |
_protect.php
<?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); } // ------------------------------------------------------------------------- // creation d un code de validation aleatoire // ------------------------------------------------------------------------- $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"] = ''; } ?> |
index.php
<?php // (debut 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 // (debut 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 ?> |
(suite commune) <!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> |
_protectpage.php
<?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 ?> |
Vos pages à protéger
Ajouter en tout début de chaque page à protéger :
<?php include("_protectpage.php") ; // ------------------------------------------------------------------- ?> |
Insérer un bouton de déconnexion
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> |
_deconnexion.php
<?php // (avec COOKIE)
session_start();
// ------------------------------------------------------
// on vide/detruit 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;
// ------------------------------------------------------
?>