begin process at 2012 05 31 09:39:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Session, déconnexion marche pas, ID conservé


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Session, déconnexion marche pas, ID conservé

vendredi 31 août 2007 à 11:43:54 | Session, déconnexion marche pas, ID conservé

glachant

bonjour,
je ne comprends pas, quand je déconnecte, et que je me reconnecte (sans fermer IE), l'id de la session est repris.
si je me déconnecte, que je ferme IE et que je me reconnecte, j'ai bien une nouvelle session avec un nouvel id qui est créé.
Comment faire pour forcer la destruction TOTALE de la session sans quitter IE et avoir un nouvel id de session à la reconnexion svp ?
MERCI D'AVANC
...et voilà mes script :
le script de gestion des log/unlog :
<?php
require_once ("Normalisation.php");
require_once ("WebSession.class.php");
session_start();
Normalisation();

$user_email   = '';
$user_name    = '';
$user_firstname = '';

$db = new DBMySQL(DB_USER, DB_PASSWORD, DB_BASENAME, DB_HOST);

//On instancie un nouvel objet session
$session = new WebSession(session_id());

if (isSet($_POST['unlog']))
{
   $session->Destroy();
   //je réaffiche la page de connexion
}

if ($session->ExistSession())
{
    if ($session->IsValidSession())
    {
        $session->Destroy();
        $errorMessage = "Une session existait déjà sur ce poste, elle a été détruite, veuillez vous reconnecter.";
        $tbs->LoadTemplate("../tpl/Identification.tpl");
    }
}
else
{
    //pas de session existante : si il y a eu un post valide, on inscrit
    if (isSet($_POST["user_email"]) and  ($_POST["user_email"]<>""))
    {
        $resultCS = $session->CreateSession($_POST["user_email"], $_POST["user_passweb"]);
        if ($resultCS)
        {
            //si c'est ok on affiche la page
        }
        else
        {
            //on affiche la page d'erreur de log
        }
    }
    else
    {
        //là c'est un petit rigolo, on le redirige vers l'identification
    }
}
?>
là le script de gestion des sessions (j'écris dans MYSQL) :
<?php
require_once ("Connect.php");
require_once ("DBMySQL.class.php");

class WebSession
{
 //Partie privée : les propriétés
 //*********************************************************************
 private $sess_id    = '';
 private $user_name   = '';
 private $user_firstname = '';
 private $user_email   = '';
 private $sess_credat  = '';
 
 private $errorMessage  = '';
 private $sessionExist  = false;
 private $sessionValid  = false;
 
 private $db;

 //--Constructeur
 //*********************************************************************
 function WebSession($session_id)
 {
  $this->db = new DBMySQL (DB_USER, DB_PASSWORD, DB_BASENAME, DB_HOST);
  
  $this->sess_id   = $session_id;
  $this->sess_credat = date("Y-m-d");
  
  $query     = "SELECT * FROM websession WHERE session_id = '$this->sess_id' " ;
  $queryResult  = $this->db->ExecuteQuery ($query);
  $session    = $this->db->NextObject ($queryResult);
  
  if(is_object($session))
  {
   //La session existe, on affecte les propriétés
   $this->sessionExist  = true;
   $this->user_name   = $session->user_name;
   $this->user_firstname = $session->user_firstname;
   $this->user_email   = $session->user_email;
   
   //Maintenant, on vérifie que le temps limite n'est pas dépassé
   $now = date ("U");
   if ($session->limit_time < $now)
   {
    $this->Destroy();
    $this->sessionExist  = false;
    $this->sessionValid  = false;
   }
   else
   {
    $this->sessionValid  = true;
   }
  }
  else
  {
   $this->errorMessage = "Désolés, aucune session n'est enregistrée, veuillez vous identifier.";
  }
 }
 

 //Fonction de Création d'une session utilisateur
 //****************************************************************************
 //retourne :
 // - true si l'utilisateur existe après avoir inséré une ouverture de session
 // - false si l'utilisateur n'existe pas ou si le mot de passe est faux
 function CreateSession($user_email, $user_passweb)
 {
  $this->user_email = $this->db->CleanStringForSQL($user_email);
  
  $queryResult  = $this->db->ExecuteQuery("SELECT * FROM user WHERE user_email = '$this->user_email'");
  $user     = $this->db->NextObject ($queryResult);
   
  if(is_object($user))
  {
   //vérification du mot de passe
   if($user->user_passweb == md5($user_passweb))
   {
    //Insertion dans la table pour 1 heure
    $now = date("U");
    $limit_time = $now + 3600;
    
    $this->user_name   = $user->user_name;
    $this->user_firstname = $user->user_firstname;
    $this->user_email   = $user->user_email;
    $this->sess_credat = date("Y-m-d");
    
    $query = "INSERT INTO websession (session_id, user_email, user_name, "
          . "user_firstname, limit_time, sess_credat) VALUES ('$this->sess_id', "
          . "'$this->user_email', '$this->user_name', '$this->user_firstname', "
          . "'$limit_time', '$this->sess_credat')";
  
    $queryResult = $this->db->ExecuteQuery($query);
     
    return true;
   }
   else
   {
    $this->errorMessage = "Mot de passe incorrect !";
    return false;
   }
  }
  else
  {
   $this->errorMessage = "L'utilisateur $user_email est inconnu !";
   return false;
  }
 }

 //Fonction de mise à jour d'une session utilisateur (quand il change ses coordonnées !)
 //****************************************************************************
 function UpdateSession($new_email)
 {
  $old_email = $this->user_email;
  $this->user_email = $this->db->CleanStringForSQL($new_email);
  
  $query     = "SELECT user_name, user_firstname FROM user where user_email='".$this->user_email."'";
  $queryResult  = $this->db->ExecuteQuery($query);
  $resObj    = $this->db->NextObject($queryResult);

  $query = "UPDATE websession SET user_email='" . $this->user_email . "', "
                 . "user_name='" . $resObj->user_name . "', "
                . "user_firstname='" . $resObj->user_firstname . "' "
                . "WHERE session_id = '$this->sess_id'";
  $this->db->ExecuteQuery($query);
 }

 // Retourne le nom d'utilisateur de la session
 public function GetUserFirstname()
 {
  return $this->user_firstname;   
 } 
 
 // Retourne le prénom d'utilisateur de la session
 public function GetUserName()
 {
  return $this->user_name;   
 } 
 
 // Retourne l'email de l'utilisateur de la session courante
 public function GetUserEmail()
 {
  return $this->user_email;   
 } 
 
 //Retourne la validité de la session courante
 //****************************************************************************
 public function IsValidSession()
 {
  return $this->sessionValid;
 }
 
 //Retourne true si on session existe, false sinon
 //****************************************************************************
 public function ExistSession()
 {
  return $this->sessionExist;
 }
 
 //Retourne le message d'erreur
 //****************************************************************************
 public function GetErrorMessage()
 {
  return $this->errorMessage;
 }
 
 //Détruit la session en cours
 //****************************************************************************
 public function Destroy()
 {
  session_unset();
  session_destroy ();

  
  $query = "DELETE FROM websession WHERE session_id ='$this->sess_id'";
  $result = $this->db->ExecuteQuery($query);
  
  $this->sessionValid  = false;
  $this->sessionExist  = false;
 }

vendredi 31 août 2007 à 12:15:18 | Re : Session, déconnexion marche pas, ID conservé

Evangun

Réponse acceptée !
Salut,

lis ça :)

[ Lien ]
vendredi 31 août 2007 à 17:09:36 | Re : Session, déconnexion marche pas, ID conservé

glachant

Super, je comprends pas il me semblait avoir essayé mais la ça marche !
je vais pas chercher à comprendre.
merci !


Cette discussion est classée dans : db, user, email, session, id


Répondre à ce message

Sujets en rapport avec ce message

Help session [ par Antidote ] Bonjur j'ai un probleme avec l'utilisation de me session. est ce que les _ sont autorisé dans les nom de session ? tel que $_SESSION['user_id'] parce redirection et session [ par sparh ] Bonjour,je bloque sur un problème de session.J'essai de créer une zone membre à l'aide des sessions. Pour l'instant tout va bien et j'ai donc un lien UPDATE de plusieurs tables [ par noreille79 ] J'ai un souci lors de la mise à jour (par les membres)des tables de ma base de données. Il modifie mon mot de passe même si je lui en ai pas déclaré probleme avec un formulaire d'iscription [ par Vigasse ] <span style="FONT-SIZE: 11pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Cali Envoyer des donnes à une autre page [ par errahmouninawal ] Bonjour tout le mondeJ'ai un probléme d'envoyer les données d'un page à une autre Voilà mon code : <form id="form1" name="form1" method="post" action= Application :publier une photo depuis une fanpage vers un profil FB en php [ par quinton75 ] Bonjour,[^^clinoeil1][^^clinoeil1] Je souhaite publier une photo depuis une fanpage vers un profil FB en php. A partir de cette source, je devrais p panier [ par hajourakr ] bonjour j'ai developper un panier php je veut suuprimer un article de panier voici mon code est ce que vous pouvez m'aider merci function supprimer problème avec variable de session et boucle while [ par indutec ] Bonjour j'ai un souci avec une variable de session qui ne veut pas passer dans une boucle while [^^sad2] voici mon code: La personne s'identifie via erreur de ponctuation sur sql [ par anto25 ] J'ai regardé plusieurs site mais je ne comprend pas ou se trouve l'eereur de ponctuation pouvez vous m'aidez. Voici l'erreurIl semble qu'il y ait une Problème de rafraichissement dune page !!!! [^^sad1] [ par FXPHANTOM ] Bonjour à tous , Je m'explique ... j'ai 2 soucis dont je n'arrive pas à résoudre ! 1. A chaque saisie d'un nombre, la modification à partir de la


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,420 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales