Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1533 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU] unserialize (depend de la version php ?)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] unserialize (depend de la version php ?)

n°2174749
killmehill
Posté le 08-02-2013 à 15:04:11  profilanswer
 

Bonjour,
 
 
voila j'ai un étrange problème.
En local je bosse avec XAMP en PHP 5.4.7
Lorsque je lance ce code en local, tout marche très bien:
 

Citation :

if (isset($_COOKIE['configuration']['couleur_planning']))
        {
 foreach(Configuration::get_couleur_planning() as $couleur => $mot) {
      foreach(unserialize($mot) as $v)
        echo '#'.$couleur."<br>";
       
          }
         
 
}
 
le cookie contient:
Array ( [configuration] => Array ( [couleur_planning] => Array ( [f9ff73] => a:2:{i:0;s:4:"VST ";i:1;s:3:"vst";} [f85a5a] => a:1:{i:0;s:13:"Sous-effectif";} [f55959] => a:1:{i:0;s:4:"STOP";} ) ) )  
Je précise que c'est données sont rentrée grâce à la fonction serialize()


 
Or lorsque je le l’héberge sur un serveur fonctionnant en php , ce message d'erreur s'affiche:  

Citation :

Warning: Invalid argument supplied for foreach() ( à propos de la ligne foreach(unserialize($mot) as $v) )
 
Et effectivement, c'est un boolean qui est retournée et non une liste. Ce qui signifie donc que unserialize a échoué. Mais ... je n'arrive pas à comprendre pourquoi.


 
Par ailleurs sur ce serveur, le cookie ne contient pas tout à fait la même chose:

Citation :

Array ( [configuration] => Array ( [couleur_planning] => Array ( [f9ff73] => a:2:{i:0;s:4:\"VST \";i:1;s:3:\"vst\";} [f85a5a] => a:1:{i:0;s:13:\"Sous-effectif\";} [f55959] => a:1:{i:0;s:4:\"STOP\";} ) ) )


(je suppose qu'ils ont changé la fonction serialize, mais dans ce cas la fonction unserialize a aussi du être mis à jour ?!)
 
 
Quelqu'un aurait il déjà rencontré ce soucis et trouvé une solution ?
Je reste perplexe ... je n'ai aucune idée sur l'origine du problème.
 
 
Cordialement.


Message édité par killmehill le 18-02-2013 à 15:56:37
mood
Publicité
Posté le 08-02-2013 à 15:04:11  profilanswer
 

n°2174805
xaeon
Profil: TT
Posté le 08-02-2013 à 16:48:46  profilanswer
 

D'après la documentation, serialize() n'a connu qu'un changement en PHP 4.0.3 (un moment donc) par contre unserialize() peut renvoyer faut lorsque la déserialisation échoue, peut être que le souci vient du cookie mais les backslash présents ne me semblent pas être bloquants.
 
En plus tu serialises des tableaux, donc pas de contraintes comme s'il s'agissait d'instances.
 
A voir quand même quelle version de php est installée sur le serveur. Dans tous les cas lors d'un probleme de déserialisation t'as une NOTICE qui est déclanchée (suivant la config de php il se peut qu'elle n'apparaisse pas)

n°2174915
Fabien
Vive la super 5 !
Posté le 09-02-2013 à 10:52:11  profilanswer
 

utilise stripslashes() pour le contenu de ton cookie.
 


---------------
Découvre le HFRcoin ✈ - smilies
n°2176168
killmehill
Posté le 18-02-2013 à 09:23:40  profilanswer
 

Bonjour,
 
bingo Fabien c'est exactement ça !
Je ne pensais pas en avoir besoin car vu que les "/" venaient du serialize, je me suis dis que le unserialize devait à son tour les gérer et les retirer. Étrange quand même...
Si quelqu'un aurait une explication du comment du pourquoi je suis preneur ;)
Mais vu que le sujet est résolut, il peut aussi être lock et je resterais dans mon ignorance :(
 
Merci encore et bonne journée !

n°2176176
Fabien
Vive la super 5 !
Posté le 18-02-2013 à 10:26:00  profilanswer
 

c'est les "magic_quote" que met automatiquement php par sécurité.


---------------
Découvre le HFRcoin ✈ - smilies
n°2176270
killmehill
Posté le 18-02-2013 à 15:13:18  profilanswer
 

D'accord.
Bha merci bien Fabien pour tout ces éclaircissement.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU] unserialize (depend de la version php ?)

 

Sujets relatifs
[RESOLU] Problème de version de PHP (ou ZEND) ?quelle est la procedure qui extraire la version du hadware (firmware)
[Need HELP !] Garder la dernière version dans une liste[SVN] Revenir à une ancienne version tout en gardant ses changements
Extraire le numéro de version d'un exePHP comment comparer des chiffre a 2 point (version)
Comment lire la version d'Oracle Client[PERL] où trouver une version 5.6.1 de nos jours ?
[Résolu] comment connaitre la version officeembarquer des informations de version dans un prog Windows
Plus de sujets relatifs à : [RESOLU] unserialize (depend de la version php ?)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR