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

Langage PHP Discussion :

sessions, unserialize et save_handler


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Points : 48
    Points
    48
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 491
    Points : 6 047
    Points
    6 047
    Par défaut
    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.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Points : 48
    Points
    48
    Par défaut
    les 2 ne sont pas formatés de la même manière.
    La question est donc comment php enregistre les sessions (quelle syntaxe)

  4. #4
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 491
    Points : 6 047
    Points
    6 047
    Par défaut
    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 !...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Points : 48
    Points
    48
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  6. #6
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 491
    Points : 6 047
    Points
    6 047
    Par défaut
    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 !...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Points : 48
    Points
    48
    Par défaut
    voilà la réponse : une fonction de décodage à la main

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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;
    }

  8. #8
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 491
    Points : 6 047
    Points
    6 047
    Par défaut
    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 !...

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Points : 48
    Points
    48
    Par défaut
    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^^)

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

Discussions similaires

  1. [Servlets - JSP] Problème de session
    Par the java lover dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 28/11/2011, 09h54
  2. [JSP][session] perte de session et sendRedirect
    Par blaz dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 30/03/2007, 09h32
  3. Réponses: 12
    Dernier message: 24/09/2003, 15h26
  4. [XMLRAD] session
    Par jml dans le forum XMLRAD
    Réponses: 4
    Dernier message: 17/12/2002, 09h24

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