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 :

Session PHP et MYsql


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Par défaut Session PHP et MYsql
    Bonjour,

    Vu l'architecture du site que j'ai repris d'HTML, je vois apparaitre le besoin de mettre $_SESSION en MYsql.... pas nouveau, je pense qu'il y a bcp de scripts existants à ce sujet.
    Mais n'y a t'il aucun danger que le visiteur B se retrouve avec la session de A même si la clé de la table est souvent 32 caractères générées de façon aléatoire.... et comme se souvenir que A à la clé 1 et B a la clé 2 ?
    Faudrait des variables de session.....
    Le serpent qui se mord la queue....

    Bref, outre ces discussions phylosophiques, si vous avez un script a me recommander au lieu de chercher, tester et recommencer.... je suis preneur !

    Merci d'avance.....

    Esteban

  2. #2
    Membre éclairé Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Par défaut PHP MYsql et $_SESSION
    Je me suis développé une classe session (pourquoi pas ???) qui est censée faire une partie du boulot mais ne sui pas trop content ou me pose des questions...

    Voici la classe: (encore en test et construction !!!!)

    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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    <?php
    class Session Extends Sql
    {	var $session ;   // Ptr venant de l'instantioation de HTML
    	var $connect ;
    
    	function __construct($session)
    	{	$this->session = $session ;
    		user_error("Constructor SESSION" , E_USER_NOTICE) ;
    	
    		if ($session)
    			{	user_error("Session starts CORRECTLY" , E_USER_NOTICE) ;
    //
    //				Rsstore session data from table (if they exist, not true the first iteration)
    //				============================================================================
    //				print_r($_SESSION) ;
    //****			$_SESSION = unserialize($this->restore_session()) ;
    			}
    		else
    			user_error("Session didn't start FATAL ERROR" , E_USER_ERROR) ;
    	}
    
    	function __destruct()
    	{	user_error("Session destruct" , E_USER_NOTICE) ;
    		//
    		// Dump $_SESSION array to disk....
    		// ================================
    //****	$this->dump_session(serialize($_SESSION)) ;
    //		print_r($_SESSION) ;		
    /*	
    		$this->destroy() ;
    		$_SESSION = array();
    		session_destroy() ;
    */
    	}
    /* ==================================================================================================================================== */		
    	function add($key,$value)
     	{	user_error("Session[ADD] - key[".$key."] => value[".$value."]" , E_USER_NOTICE) ;
    		
    		if (  isset($_SESSION[ $key ]) )
    			{	user_error("Impossible to Add Session Variable[ $key ] or already defined !" , E_USER_WARNING) ;
    				return(false) ;
    			}
    		else
    			{	$_SESSION[ $key ] = $value ;
    				return(true) ;
    			}
     	}
    
    	function set($key,$value)
     	{	if (isset($_SESSION[ $key ]))
    			{	$_SESSION[ $key ] = $value ;
    				return(true) ;
    			}
    		else
    			{	$_SESSION[ $key ] = $value ;
    				user_error("Variable SESSION{". $key ."] is supposed to exist !!!!" , E_USER_WARNING) ;
    				return(false) ;
    			}
     	}
    
    	function get($key)
     	{//				SESSION[Get] ==> [IsConnected] is [] is that right ?
    	 //	 user_error("SESSION_GET... just to check.... [".  $key . "]" , E_USER_NOTICE) ;
    		
    		if (isset($_SESSION[ $key ]))
    			user_error("SESSION[Get] ==> [" .$key . "] is [" . $_SESSION[ $key ] . "] is that right ?" , E_USER_WARNING) ;
    		else	
    			user_error("SESSION[Get] ==> [". $key ."] is not defined !!!!!" , E_USER_WARNING) ;
    //		print_r($_SESSION) ;
    		return( (isset($_SESSION[ $key ])) ? $_SESSION[ $key ] : false) ;   
    	}
    
    	function del($key)
     	{	if (isset($_SESSION[" $key "]))
    			unset($_SESSION[" $key "]) ;
     	}
    
    	function session_dump()
    	{//	user_error("Session[ADD] - key[".$key."] - value[".$value."]" , E_USER_NOTICE) ;	{	
    		foreach($_SESSION as $key => $value) :
    			user_error("Session[DUMP] - key[" . $key . "] => Value[" . $value . "]", E_USER_NOTICE) ;
     		endforeach ;	
     		//
    		// 	"endforeach" as seen in PHP.NET.....
    		//	add this to the end of every foreach() you use
    		unset($key,$value) ;
    	}	
    	
    	function session_empty($logout=false)
     	{	user_error("Session [Empty]" , E_USER_NOTICE) ;
    		foreach($_SESSION as $key => $value)
    		   if($key != "redirector" && ($key != "user" || $logout))
        			unset($_SESSION[ $key ]);
     	}
    /* ==================================================================================================================================== */		
    /* ==================================================================================================================================== */		
    /* ==================================================================================================================================== */								    function session_id()
    	{	return("jecrepahute_session_data") ;  }
    
    	function restore_session()
    	{	user_error("Trying to Restore SESSION....." , E_USER_NOTICE) ;
    	
    		$id  = $this->session_id() ;
    		$sql = "select sessiondata 
    		          from sessions 
       			     where     ID = '" . $id      . "'"  ; 
     
    		$this->dbLink = Sql::open("session") ;
    		if ( !( $this->dbResult = Sql::query($sql, $this->dbLink)) )
    			return(false) ;
    		$dbRow = Sql::fetch_assoc($this->dbResult) ;
    		//
    		//	Signale que la DB a été accédée
    		//	===============================
    		$upd = "UPDATE sessions " .
    		          "SET " .
    				  		"lastaction = now() " .
    				"WEHRE ID = '" . $id . "'" ;
    		if ( !( $this->dbResult = Sql::query($sql, $this->dbLink)) )
    			return(false) ;
    		//
    		//  retourne (enfin....) sessiondata !
    		//	==================================
    		return($dbRow["sessiondata"]) ;
    	}
    	
    	function dump_session($session)
    	{	user_error("Trying To Store SESSION....." , E_USER_NOTICE) ;
    		
    		$id   = $this->session_id() ;
    
    //
    //		Cfr Campus press PHP5 page 774
    //	    ==============================
    		$this->dbLink = Sql::open("session") ;
    		
    //
    //      on crée la session si elle n'existe pas...
    //		------------------------------------------
    		$isrt = "INSERT IGNORE into sessions ( ID ) VALUES ('" . $id  . "' ) " ;
    		if ( !( $this->dbResult = Sql::query($isrt, $this->dbLink)) )
    			return(false) ;
    		//
    		//	On actualise la seesion
    		//	=======================
    		$updt = "UPDATE sessions " .
    		  			"SET " .
    					      "sessiondata = '" . addslashes($session) . "'  , " .  
    						  "lastaction  = NOW() " .
    					"WHERE ID = '" . $id . "'" ;
    		if ( !( $this->dbResult = Sql::query($updt, $this->dbLink)) )
    			return(false) ;
    		return(true) ;
    	}
    	
    	function destroy()
    	{	$dlet= "DELETE from sessions" .
    	            "WHERE id = '" . $id . '"' ;
    		if ( !( $this->dbResult = Sql::query($sql, $this->dbConnect)) )
    			return(false) ;
    		return(true) ;
    	}
    }
    ?>
    Quand je rentre une adresse mail (comme clé) et son password associé, je crée ces variables de session afin de oir si au coup suivant je suis tj supposé être connecté (puisque les variablers de session existent tjs...)
    Je fais un prin_r de $_SESSION avant sauvegarde et après récupération et même si j'utilise la fonction (un)serialize de PHP, je suis un peu surpris des résultats....

    Celui me semble normal (sauvetage):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [IsConnected] => 0 )
    Je me pose des questions qu sujet de celui_ci (Restauration)

    [CODE]s:227:"s:218:"s:209:"s:200:"s:191:"s:182:"s:173:"s:164:"s:155:"s:146:"s:137:"s:128:"s:119:"1:110:"s:101:"s:93:"s:85:"s:77:"s:69:"s:61:"s:53:"s:45:"s:37:[
    /CODE]

    Les 2/3 varrables que j'utilise pour me logger au site sont inconnues au bataillon..... mais là, je dois faire un peu de debuggging pour m'asssurer qu'il n'y a pas de lézard....

    Merci pour vos conseils précieux.

    Esteban

  3. #3
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Citation Envoyé par ETVigan Voir le message
    je vois apparaitre le besoin de mettre $_SESSION en MYsql.... pas nouveau, je pense qu'il y a bcp de scripts existants à ce sujet.
    Mais n'y a t'il aucun danger que le visiteur B se retrouve avec la session de A même si la clé de la table est souvent 32 caractères générées de façon aléatoire.... et comme se souvenir que A à la clé 1 et B a la clé 2 ?
    Bonjour, tu veux mettre l'identifiant de session généré par php en base ? Pourquoi ne pas créer un id unique pour chaque visiteur plutot ? Pour l'histoire des identifiants de session, impossible que 2 visiteurs aient le meme identifiant du moins lorsqu'ils sont connectés en meme temps

    Le serveur attribue à chaque visiteur un identifiant unique qui est soit envoyé au client sous forme de cookie (par défaut), soit passé de façon systématique dans l'URL.

  4. #4
    Membre éclairé Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Par défaut PHP, session & MYsql
    Merci de tes infos....

    Mais j'aurai aussi souhaité de savoir si c'était un résultat de la sérialisation d'avoir une tableau $_SESSION qui contient:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s:227:"s:218:"s:209:"s:200:"s:191:"s:182:"s:173:"s:164:"s:155:"s:146:"s:137:"s:128:"s:119:"1:110:"s:101:"s:93:"s:85:"s:77:"s:69:"s:61:"s:53:"s:45:"s:37:
    qui serait l'équivalent de:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [IsConnected] => 0 )
    Merci

    Esteban.

  5. #5
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Citation Envoyé par ETVigan Voir le message
    Merci de tes infos....

    Mais j'aurai aussi souhaité de savoir si c'était un résultat de la sérialisation d'avoir une tableau $_SESSION qui contient:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s:227:"s:218:"s:209:"s:200:"s:191:"s:182:"s:173:"s:164:"s:155:"s:146:"s:137:"s:128:"s:119:"1:110:"s:101:"s:93:"s:85:"s:77:"s:69:"s:61:"s:53:"s:45:"s:37:
    qui serait l'équivalent de:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [IsConnected] => 0 )
    Merci

    Esteban.
    Ca ressemble en effet à de la sérialisation mais pas de ton tableau

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $tableau = array('IsConnected'=>0);
     
    echo  serialize($tableau);
    // affiche : a:1:{s:11:"IsConnected";i:0;}

Discussions similaires

  1. [MySQL] Sessions dans base MYSQL (suite au tuto "Sessions et Cookies en PHP")
    Par telliouze dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 14/08/2008, 16h08
  2. session php et mySQL
    Par kuja2053 dans le forum Langage
    Réponses: 4
    Dernier message: 22/02/2007, 14h08
  3. Réponses: 3
    Dernier message: 20/05/2006, 23h28
  4. Travailler avec PHP / Apache / MySQL
    Par R3iTt0R dans le forum Linux
    Réponses: 22
    Dernier message: 24/06/2004, 11h03

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