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 :

serialize, problèmes avec des clés contenant des ".&qu


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 685
    Points : 132
    Points
    132
    Par défaut serialize, problèmes avec des clés contenant des ".&qu
    Bonjour,

    J'ai un tableau avec des clés du genre :
    F2A046b7.5M

    Quand j'utilise serialize () puis unserialize () sur le tableau, je me retrouve avec une duplication des clés contenant un ".", une ligne bonne avec clé F2A046b7.5M et une ligne vide avec clé F2A046b7_5M ?!
    Autrement dit, la clé qui compte un "." est dupliquée et le "." est remplacé par "_" dans la duplication.

    Par contre, une clé avec une virgule comme F2A046b7,5M ne pose aucun problème.

    J'ai lu la doc en ligne serialize () et unserialize (), de nombreux utilisateurs signalent des bugs, mais pas celui-là.

    Peut-être est-ce lié aussi au fait que mon tableau sérialisé est enregistré en variable de SESSION avant d'être unserializé.

    Avez-vous une idée et voyez-vous une solution moins lourde que des str_replace (".", ",", $key) en entrée et l'inverse à la sortie.

    Ne me dites pas que c'est idiot d'avoir des points dans des clés, je le sais mais c'est pas moi qui ai fait la base de données.

    MERCI d'avance

  2. #2
    Membre habitué Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 156
    Points
    156
    Par défaut
    Salut,

    C'est un peu bizarre comme erreur j'ai utilisé cette fonction en sérialisant des objets qui venaient de sessions et je n'ai jamais eu de problèmes...

    Sinon, si tu n'estimes que ca soit trop lourd, as-tu essayé de convertir tes clés en base64 avant?

    @+

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 685
    Points : 132
    Points
    132
    Par défaut
    MERCI de mon intérêt.

    C'est effectivement bizarre, mais à lire la doc PHP il y a beaucoup de choses bizarres avec serialize, notamment avec les FLOAT.

    Je code comme ça :

    $_SESSION['prodses'] = base64_encode (serialize ($prod));

    Je crois que cet ordre est indispensable, c'est indiqué partout de faire comme ça, je n'ai pas besoin d'utiliser addslashes () car aucun caractère du tableau ne nécessite un échappement.

    Je ne pense pas que tu puisse utiliser base64_encode sur un tableau.

    Il faudrait peut-être essayer :
    serialize (array_map ("base64_encode", $prod));

    Qu'en penses-tu ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 685
    Points : 132
    Points
    132
    Par défaut
    Bonjour,

    Si cela peut intéresser quelqu'un, le problème ne venait pas du tout de serialize.

    C'est une sombre histoire d'un nom de variable dans un FORM comprenant un point, du genre :

    <input type="text" name="FR55.ea" />

    Quand le FORM est soumis FR55.ea devient FR55_ea, et la suite de mon script ajoutait une clé FR55_ea sans modifier la valeur de FR55.ea.

    Cela dit, j'ai quand même remplacé de lourd serialize par une simple fonction quitransforme un tableau en chaîne, et unserailize par la fonction inverse

    Mes excuses pour le dérangement.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/03/2011, 21h53
  2. [JDOM] Problème avec les nom contenant des tirets '-'
    Par malimaot dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 09/02/2011, 17h57
  3. Réponses: 9
    Dernier message: 27/05/2009, 10h20
  4. Problème avec un switch contenant des strings
    Par dessinateurttuyen dans le forum Langage
    Réponses: 6
    Dernier message: 18/07/2006, 12h56
  5. Problème avec une TImageList contenant des grandes images
    Par Manopower dans le forum Composants VCL
    Réponses: 8
    Dernier message: 17/11/2005, 15h20

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