CodeS-SourceS
Rechercher un code, un tuto, une réponse

Php - administrer en ligne : protection des pages

Août 2017


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.
- généré aléatoirement à chaque nouvelle identification.
- n'est valide qu'une fois.

Les fichiers nécessaires (dossier ADMIN)


_protect.phpcontient vos identifiants et mots de passe
index.phpformulaire d'identification
_protectpage.phpprotection des pages
vos pages à protégerscripts à inclure
_deconnexion.php
déconnexion et retour à votre site

protect.php

partie commune


<?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;
// -------------------------------------------------------------------------
?>

suite avec COOKIE


<?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", "");
}
?>

suite avec SESSION


<?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

début avec COOKIE


<?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
?>

début avec SESSION


<?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
?>

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

avec COOKIE


<?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
?>

avec SESSION


<?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

Code


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

avec COOKIE


<?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;
// ------------------------------------------------------
?>

avec SESSION


<?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

A voir également

Publié par jreaux62.
Ce document intitulé «  Php - administrer en ligne : protection des pages  » issu de CodeS-SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Php - redimensionner image + picto après upload
Affichage en tableau : afficher des données dans un tableau