Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SÉCURISER UNE PAGE


Information sur la source

Catégorie :Astuces Niveau : Débutant Date de création : 02/03/2005 Vu : 8 674

Note :
5,5 / 10 - par 2 personnes
5,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

Description

Ce script permet de sécuriser une page. car en pratique une session est persistante et qu'il faut fermer le navigateur pour effacer la session de la memoire du serveur. Pour éviter cela voici un script de déconnexion qui détruit aussi la session.
Ce scrip est à mettre sur toutes les pages à sécuriser.
Ce script suppose aussi que qu'il y a plusieurs état : statut public , etc.... ça peu être modifié.
 

Source

  • <?php
  • //init de la session
  • session_start();
  • // ** Déconnexion de l'utilisateur courant. **
  • $logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
  • if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
  • $logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
  • }
  • if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
  • //Pour détruire complètement la session du user, il faut détruire aussi ses variables de sessions
  • session_unregister('MM_Username');
  • session_unregister('MM_UserGroup');
  • session_unregister("statut");
  • session_destroy();
  • $logoutGoTo = "../login.php";
  • if ($logoutGoTo) { //si la variable renvoire true
  • header("Location: $logoutGoTo"); // retour à la page login
  • exit;
  • }
  • }
  • // vérification du statut de la personne qui demande une page
  • if ($_SESSION['VARstatut'] != "public") //si statut est différent de la personne connectée
  • { header("Location: ../login.php");} // retour à la page login
  • ?>
  • <html>
  • <body>
  • <a href="<?php echo $logoutAction ?>" >Déconnexion</a>
  • </body>
  • </html>
<?php
//init de la session
session_start();

// ** Déconnexion de l'utilisateur courant. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
  $logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
  //Pour détruire complètement la session du user, il faut détruire aussi ses variables de sessions
  session_unregister('MM_Username');
  session_unregister('MM_UserGroup');
  session_unregister("statut");
  session_destroy();
	
  $logoutGoTo = "../login.php";
  if ($logoutGoTo) {   //si la variable renvoire true
    header("Location: $logoutGoTo"); // retour à la page login
    exit;
  }
}

// vérification du statut de la personne qui demande une page

if ($_SESSION['VARstatut'] != "public")  //si statut est différent de la personne connectée
{ header("Location: ../login.php");}  // retour à la page login
?>


<html>
<body>

     <a href="<?php echo $logoutAction ?>" >Déconnexion</a>

</body>
</html>

Commentaires et avis

signaler à un administrateur
Commentaire de coucou747 le 02/03/2005 18:59:08

if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
oh... tu devrais mettre :
if (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING']){

et sinon, t'as des " partout...

$logoutGoTo = "../login.php";
    if ($logoutGoTo) {   //si la variable renvoire TRUE
euh... ton commentaire ne décrit pas du tout le fonctionnement du code...c'est à remplacer par :
    $logoutGoTo = "../login.php";

if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
est à remplacer par :
if (isset($_GET['doLogout']) &&$_GET['doLogout']=='true'){
j'éspères que la variable doit contenir true, enfin que tu ne vérifiais pas si elle existait...

{ header("Location: ../login.php");}    // retour à la page login
est à remplacer par :
{ header('Location: ../login.php');}    // retour à la page login

    $logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
est à remplacer par :
    $logoutAction .='&'. htmlentities($_SERVER['QUERY_STRING']);

enfin, il reste pas mal de travail...
en voyant ça, j'ai pas eu envie de tester, donc j'ai pas noté...

signaler à un administrateur
Commentaire de kezac007 le 03/03/2005 01:10:17

oui, enfin, mis à part les "" ce script marche correctement, je l'utilise personnellement.

signaler à un administrateur
Commentaire de GRenard le 03/03/2005 06:05:42

coucou747 : "
oh... tu devrais mettre :
if (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING']){"
Je ne suis pas d'accord... on compare quoi ? un boolean ? on sait même pas si on mets pas != "" par contre remplacer " par '.
Pour ce qui est de la manipulation de query, un défaut... si doLogout existe déjà ! bah c'est pas bon :(
Faudrait je poste une source pour enlever ca ;) je l'ai déjà dans mes fonctions.

signaler à un administrateur
Commentaire de sarl_adc le 04/03/2005 11:38:16

Juste une question comme ça, ça sert à quoi de remplacer " par ' ?

signaler à un administrateur
Commentaire de GRenard le 04/03/2005 13:10:20

À faire fonctionner le script PHP plus rapidement ! pourquoi? parce que si tu mets des " ", le PHP va te parser toute ta chaine à la recherche de variable à l'intérieur. Alors qu'avec des simple quote, le PHP affiche tel quel.
Donc => Gain de rapidité

signaler à un administrateur
Commentaire de sarl_adc le 04/03/2005 14:43:18

Intéressant et utile, moi qui suis adepte des "" ;-)

Merci !

signaler à un administrateur
Commentaire de kingounet le 23/03/2005 10:24:35

marche pas chez moi quand je lance la page il me dis qu'il ne la trouve pas ... bizarre lol enfin pe easyphp qui déconne


Bye bye j'espere que je vais arriver a le faire marcher

signaler à un administrateur
Commentaire de Aramiil le 25/03/2005 17:08:55

session_unregister('MM_Username');
    session_unregister('MM_UserGroup');
    session_unregister("statut");

Ce serait pas plus rapide et plus simple d'utiliser session_unset() ?

Ensuite, je ne comprends pas l'utilité de ceci:

$logoutGoTo = "../login.php";
    if ($logoutGoTo) {   //si la variable renvoire TRUE

A quoi sers de tester si une variable contient quelque chose, alors qu'on la rempli à la ligne d'avant?

signaler à un administrateur
Commentaire de dhia45 le 21/04/2005 19:20:25

Fantastic Fantastic Fantastic Fantastic
sécurité en premiére même dans le kayasss..

signaler à un administrateur
Commentaire de gregmarty83 le 17/01/2006 16:27:09

Bonjour votre code marche très bien je vous en remercie par contre je voudrai que la session s'arrete après 5min admettons, comment faire?
<?php if( ) {echo $logoutAction} ?>
que dois mettre entre parenthèses.
MErci.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.