IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

variable de session stoké dans une base de donnée [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 199
    Par défaut variable de session stoké dans une base de donnée
    Bonjour,
    Je entrain de développer un site web et j'ai quelque soucis avec les sessions.
    Pour créer mes session j'utilise la technique avec les base de données.
    J'utilise la classe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    <?php
    /***************************************************************************
    *  description: gestion des sessions par la bdd
    *                            -------------------
    *   copyright        : F_D_V copyright creative commmon cc by-no :
    *                     pas d'utilisation commerciale autorisée, droit de modification, l'auteur doit être cité
    *                     pour plus d'information http://creativecommons.org/licenses/by-nc/2.0/fr/
    ****************************************************************************/
    class Session
    {
    	public $session_time = 7200;//2 heures
    	public $session = array();
     
     
    	public function __construct($sql_host, $sql_user, $sql_password, $sql_db)
    	{
    		$this->host = $sql_host;
    		$this->user = $sql_user;
    		$this->password = $sql_password;
    		$this->dba = $sql_db;
    	}
     
    	public function open ()//pour l'ouverture
    	{
    		$this->connect = mysql_connect($this->host, $this->user, $this->password,1);//on se connecte a la bdd
    		$bdd = mysql_select_db($this->dba,$this->connect);//on sélectionne la base de données
     
    		$this->gc();//on appelle la fonction gc		
    		return $bdd;//true ou false selon la réussite ou non de la connexion à la bdd
    	}
     
    	public function read ($sid)//lecture
    	{
                    $sid = mysql_real_escape_string($sid,$this->connect);
    		$sql = "SELECT sess_datas FROM sess_table
    				WHERE sess_id = '$sid' ";
     
    		$query = mysql_query($sql,$this->connect) or exit(mysql_error());	
    		$data = mysql_fetch_array($query);
     
    		if(empty($data)) return FALSE;
    		else return $data['sess_datas'];//on retourne la valeur de sess_datas
    	}
     
    	public function write ($sid, $data)//écriture
    	{
    		$expire = intval(time() + $this->session_time);//calcul de l'expiration de la session
    		$data = mysql_real_escape_string($data,$this->connect);//si on veut stocker du code sql 
     
    		$sql = "SELECT COUNT(sess_id) AS total
    			FROM SESS_TABLE
    			WHERE sess_id = '$sid' ";
     
    		$query = mysql_query($sql,$this->connect) or exit(mysql_error());
    		$return = mysql_fetch_array($query);
    		if($return['total'] == 0)//si la session n'existe pas encore
    		{
    			$sql = "INSERT INTO SESS_TABLE
    				VALUES('$sid','$data','$expire')";//alors on la crée
     
    		}
    		else//sinon
    		{
    			$sql = "UPDATE SESS_TABLE
    				SET sess_datas = '$data',
    				sess_expire = '$expire'
    				WHERE sess_id = '$sid' ";//on la modifie
    		}		
    		$query = mysql_query($sql,$this->connect) or exit(mysql_error());
     
    		return $query;
    	}
     
    	public function close()//fermeture
    	{
    		mysql_close($this->connect);//on ferme la bdd
    	}
     
    	public function destroy ($sid)//destruction
    	{
    		$sql = "DELETE FROM SESS_TABLE WHERE sess_id = '$sid' ";//on supprime la session de la bdd
    		$query = mysql_query($sql,$this->connect) or exit(mysql_error());
    		return $query;
    	}
     
    	public function gc ()//nettoyage
    	{
    		$sql = "DELETE FROM sess_table
    				WHERE sess_expire < ".time(); //on supprime les vieilles sessions 
     
    		$query = mysql_query($sql,$this->connect) or exit(mysql_error());
     
    		return $query;
    	}
    }//fin de la classe
    ?>
    et dans mon fichier php j'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    $session = new Session($hostname_connection, $username_connection, $password_connection, $database_connection);//on déclare la classe
     
    session_set_save_handler(array($session, 'open'),
                             array($session, 'close'),
                             array($session, 'read'),
                             array($session, 'write'),
                             array($session, 'destroy'),
                             array($session, 'gc'));//on précise les méthodes à employer pour les sessions
     
    		session_start();
     
    		$_SESSION['idclient']=$_POST['login'];
    Jusque la ca marche tres bien mon histoire.
    J'en arrive au pb
    Je voudrais recuperer l'idclient sur une autre page et le navigateur me dit que ma variable n'existe pas.
    J'essaye avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php 
    require_once("session.php");
    session_start();
    echo $_SESSION['idclient'];
    ?>
    Avez vous une idée ?

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 199
    Par défaut
    Personne n'a d'idée ?
    car moi je bloque tjs.......

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 199
    Par défaut
    Bon à force de persévérance j'ai trouvé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] insertion d'un variable de type chaine dans une base
    Par naim2009 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/03/2009, 15h20
  2. [MySQL] Récupérer une variable d'une fonction et enregistrement dans une base de données
    Par Mikke dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 03/03/2008, 17h02
  3. Variable de session initialisée dans une iframe
    Par magdalena dans le forum Langage
    Réponses: 2
    Dernier message: 02/07/2007, 11h06
  4. Stocker les sessions dans une base de données
    Par mic79 dans le forum Langage
    Réponses: 7
    Dernier message: 06/04/2006, 21h57
  5. Variables de Sessions crées dans une Function perdues
    Par vampiloup dans le forum Langage
    Réponses: 7
    Dernier message: 12/01/2006, 16h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo