|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : juillet 2006 Messages : 7 ![]() |
Bonjour à tous,
Je suis vraiment bloqué sur un pb de sérialistation/désérialisation que j'utilise avec des sessions. 1. Lorsque l'utilisateur se loggue, je crée un objet "user" (contenant ses infos pesonnelles). 2. Je sérialise cet objet 3. Je l'enregistre dans un champ de type "blob" de ma table MySQL avec l'id de la session. 4. A l'ouverture d'une seconde page php, je récupére l'id de la session 5. Je cherche l'enregistrement de ma session poru trouver mon objet sérialisé. 6. Je voudrais désérialiser le contenu récupéré: Pour cela, je fais: Code :
Pouvez-vous m'aider? Si vous avez besoin de plus de détails pour m'aider, n'hésitez pas à me demander. Merci ! |
||
|
|
00
|
|
|
#2 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Que donne var_dump avant/après (respectivement de $donnees et $client) ?
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juillet 2006 Messages : 7 ![]() |
Alors avant, j'ai NULL pour les 2 variables
Apres, pour $donnees : j'ai l'objet sérialisé de cette forme : string(101) user|s:88:"O:4:"User":3:{s:3:"nom";s:2:"da";s:12:"�User�prenom";s:2:"da";s:9:"�User�tel";s:2:"23";}";" et $client : bool(false) Tout est normal non? Mis à par bien sur qu'il n'y a rien dans $client apres. Tu aurais une idée? merci pour ton aide |
|
|
00
|
|
|
#4 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Si unserialize échoue, ce qui est le cas ici puisque la valeur FALSE est retournée, vous devriez obtenir un message d'erreur (de type notice). Il faudrait donc forcer son affichage si nécessaire avant (avec error_reporting(E_ALL) par exemple).
Il se pourrait que ce soit un problème d'encodage qui en soit à l'origine ... |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juillet 2006 Messages : 7 ![]() |
En effet, j'ai une notice qui me dit :
Notice: unserialize() [function.unserialize]: Error at offset 0 of 101 bytes in C:\Progr...... Mais comment savoir si j'ai un pb à l'encodage? C'est vrai que j'ai des caractères bizzare dans qd je récupére mon champ "dataobject". J'ai des �. C'est peut etre pas normal? L'interclassement de mon champ est : latin1_swedish_ci Tu aurais une idée? Tu pense que je récupère pas ce qu'il faut? |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : juillet 2006 Messages : 7 ![]() |
J'essaye de désérialiser ca :
user|s:88:"O:4:"User":3:{s:3:"nom";s:2:"da";s:12:"�User�prenom";s:2:"da";s:9:"�User�tel";s:2:"23";}"; |
|
|
00
|
|
|
#7 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Comment sérialiser vous cet objet ? A quoi correspond le début (user|) ?
PS : la "déclaration" de la classe User doit être présente avant l'appel à unserialize. |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : juillet 2006 Messages : 7 ![]() |
user correspond au nom de mon objet
User correspond au nom de ma classe nom : le premier attribut de la classe prenom le deuxième tel le troisieme |
|
|
00
|
|
|
#9 | |||
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
J'ai bien compris mais vous n'avez pas répondu à ma question qui était comment en arrivez-vous à cette sérialisation ?
Le format obtenu ne correspond pas au format standard de la fonction serialize. Ici, il semble s'agir de celui des sessions qui utilise une technique légèrement différente (et après une première sérialisation). ![]() Il semblerait alors qu'il faille s'orienter d'abord vers la fonction session_decode (à moins d'implémenter un équivalent) : Code :
Citation:
|
|||
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : juillet 2006 Messages : 7 ![]() |
J'ai du rater quelque chose parce que je ne comprend plus rien.
Ce que je fais me parait simple, mais je dois m'y prendre mal. page1.php 1. je crée un objet user 2. je crée une session 3. j'enregistre l'id de la session et l'objet sérialisé (serialize($user)) dans une table page2.php 1. je récupere l'id de la session avec session_id() 2. je cherche l'enregistrement dans la table (et donc mon objet sérialisé) 3. je fais un unserialize($donneesSerialisees) Je n'arrive pas à obtenir la meme chose que vous avec la solution que vous me proposez ... |
|
|
00
|
|
|
#11 | |
|
Expert Confirmé
![]() Développeur informatique Inscription : février 2005 Messages : 2 982 ![]() |
Citation:
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !... |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com