Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/07/2006, 12h15   #1
Nouveau Membre du Club
 
Inscription : novembre 2005
Messages : 57
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : novembre 2005
Messages : 57
Points : 30
Points : 30
Par défaut sessions, unserialize et save_handler

Bonjour,

Je stock mes sessions dans une table sessions, et je dois lire les data d'un enregistrement de cette table (donc pas forcement la session en cours)
Donc, je récupère la string sérializé de mon enregistrement mais impossible de le désérialisé :

Code :
1
2
// string contenant ma session sérializé : $data
print_r(unserialize($data));

Et rien ne s'affiche..print_r($data) fonctionne et ressemble à ca :
Code :
token|s:32:"75e7083d1eff655fdf62b76ab84c0f72";ebusinesscart|O:4:"cart":4:{s:8:"products";a:1:{i:0;a:2:{s:2:"id";i:1;s:8:"quantity";i:4;}}s:10:"nbProducts";i:1;s:2:"db";O:2:"db":1:{s:3:"con";i:0;}s:7:"session";s:9:"ebusiness";}
Merci
HALOMOTO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2006, 17h05   #2
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
as tu comparés la chaine avant l'enregistrement dans la base et après ?

print_r($_SESSION);
print_r(unserielise(serialise($_SESSION)));

si ça affiche strictement la même chose alors le probleme est dans la base de données avec éventuellement un probleme de longueur du champs ou l'interclassement.
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2006, 09h41   #3
Nouveau Membre du Club
 
Inscription : novembre 2005
Messages : 57
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : novembre 2005
Messages : 57
Points : 30
Points : 30
les 2 ne sont pas formatés de la même manière.
La question est donc comment php enregistre les sessions (quelle syntaxe)
HALOMOTO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2006, 14h29   #4
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
C'es bizarre que ce test n'est pas fonctionné. Normalement ça devrait afficher la même chose.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2006, 14h56   #5
Nouveau Membre du Club
 
Inscription : novembre 2005
Messages : 57
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : novembre 2005
Messages : 57
Points : 30
Points : 30
enfin si bien sûr ca affiche la même chose, mais mes sessions enregistrées dans la base sont différentes :

serialize($_SESSION) != du contenu de ma base
pourtant ma fonction d'écriture dans le session_set_save_handler ressemble à ca :
Code :
1
2
3
4
5
6
7
8
 
function _write($ses_id, $data)
	{
		$access = time();
		return $this->db->query("REPLACE
								   INTO $this->table (id, access, data)
								   VALUES ('$ses_id','$access','$data')");
	}
Donc la question comment formate-t-il ce $data ?
HALOMOTO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2006, 15h43   #6
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Le problème provient de la base de données. Il doit y avoir un formatage du contenu du au type de champs, longueur de champs ou interclassement, Caractère déchappement, ...
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2006, 10h06   #7
Nouveau Membre du Club
 
Inscription : novembre 2005
Messages : 57
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : novembre 2005
Messages : 57
Points : 30
Points : 30
voilà la réponse : une fonction de décodage à la main

Code :
1
2
3
4
5
6
7
8
9
10
11
function unserializesession($data) {
   $vars=preg_split(
             '/([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\|/',
             $data,-1,PREG_SPLIT_NO_EMPTY |               
             PREG_SPLIT_DELIM_CAPTURE
             );
   for($i=0; $vars[$i]; $i++) {
       $result[$vars[$i++]]=unserialize($vars[$i]);   
   }
   return $result;
}
HALOMOTO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2006, 12h05   #8
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Non mais là tu n'as pas réglé réellement le problème. T'as parfumé du caca pour cacher l'odeur . Si le problème provient de la base de données et que toi ou l'hebergeur change un peut la config tu peux l'avoir dans l'os.
Veuillez recommencer :o
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2006, 17h14   #9
Nouveau Membre du Club
 
Inscription : novembre 2005
Messages : 57
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : novembre 2005
Messages : 57
Points : 30
Points : 30
il existe une fonction pour décoder les sessions : session_decode

mais certains on cree leur propre fonctions de décodage bref pour l'instant je reste là-dessus (mon bô caca^^)
HALOMOTO est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h44.


 
 
 
 
Partenaires

Hébergement Web