unserialisation !

unserialisation ! - PHP - Programmation

Marsh Posté le 23-05-2008 à 16:15:27    

Bonjour bonjour,
 
aujourd'hui, je me casse la tete ! ça fait une aprem que j'essaye d'améliorer un plugin spip2spip pour gérer les événements, et j'ai un problème au niveau de la serialisation !
 
voici le code posant probleme :
 

Code :
  1. $_evenements = $article['evenements'];
  2. $_evenements2=unserialize($_evenements);
  3. foreach($_evenements2 as $_evenement) {


 
dans $article['evenements']; il y a ceci :
 

Code :
  1. a:2:{i:0;a:8:{s:7:"idevent";s:1:"7";s:7:"datedeb";s:19:"2008-05-19 14:03:00";s:7:"datefin";s:19:"2008-05-21 15:03:00";s:5:"titre";s:29:"Gérer un projet informatique";s:4:"desc";s:0:"";s:4:"lieu";s:5:"Paris";s:7:"horaire";s:3:"non";s:8:"idsource";s:37:"non 0";}i:1;a:8:{s:7:"idevent";s:2:"47";s:7:"datedeb";s:19:"2008-06-02 14:43:00";s:7:"datefin";s:19:"2008-06-02 15:43:00";s:5:"titre";s:32:"Maîtrise d'ouvrage, l'essentiel";s:4:"desc";s:0:"";s:4:"lieu";s:5:"Paris";s:7:"horaire";s:3:"non";s:8:"idsource";s:37:"non 0";}}


 
et la unserialisation renvoi false !
 
que faire, quel piste me donné vous pour debugé ? apart la boule de cristal :p

Reply

Marsh Posté le 23-05-2008 à 16:15:27   

Reply

Marsh Posté le 23-05-2008 à 16:34:22    

Je sais où est l'erreur (activation de error_reporting(E_ALL)) mais je ne sais pas comment corriger....
 
165° caractère (s:29:"Gérer un projet informatique" ) : la sérialisation annonce 29 caractères alors qu'il n'y a que 28....


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 23-05-2008 à 16:44:45    

En fait y'a pas qu'une seule, mais 4:

  • s:29:"Gérer un projet informatique"
  • s:37:"non 0"
  • s:32:"Maîtrise d'ouvrage, l'essentiel"
  • s:37:"non 0"


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 23-05-2008 à 16:53:06    

et comment je regle ça ? :s
 
php qui bug on aura tout vu :s

Message cité 1 fois
Message édité par Bluntch le 23-05-2008 à 16:53:25
Reply

Marsh Posté le 23-05-2008 à 16:57:18    

j'ai trouvé ça qui me resout le probleme :  
 

Code :
  1. $_evenements = $article['evenements'];
  2.      $_evenements = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $_evenements );
  3.                   if ($_evenements!="" ) {
  4.                    $_evenements=unserialize($_evenements);


 

Reply

Marsh Posté le 23-05-2008 à 16:58:04    

Bluntch a écrit :

et comment je regle ça ? :s
 
php qui bug on aura tout vu :s


Si le problème se pose sur ton serveur perso en local, peut etre une mise à jour de php peut résoudre le problème ? (s'il vient bien de php)


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 23-05-2008 à 17:00:12    

Comment recois-tu ta variable à "unserializer" ? SESSION, POST, ....


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 23-05-2008 à 17:21:22    

non par appel de fonction, j'suis sur ovh donc pour la mise a jour de php, ds l'cululu ^^

Reply

Marsh Posté le 23-05-2008 à 17:30:07    

Tu es sûr qu'entre la sérialisation et l'unserialisation, ta variable n'est pas modifiée ?


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 23-05-2008 à 18:04:28    

Bluntch a écrit :

Bonjour bonjour,
 
aujourd'hui, je me casse la tete ! ça fait une aprem que j'essaye d'améliorer un plugin spip2spip pour gérer les événements, et j'ai un problème au niveau de la serialisation !
 
voici le code posant probleme :
 

Code :
  1. $_evenements = $article['evenements'];
  2. $_evenements2=unserialize($_evenements);
  3. foreach($_evenements2 as $_evenement) {


 
dans $article['evenements']; il y a ceci :
 

Code :
  1. a:2:{i:0;a:8:{s:7:"idevent";s:1:"7";s:7:"datedeb";s:19:"2008-05-19 14:03:00";s:7:"datefin";s:19:"2008-05-21 15:03:00";s:5:"titre";s:29:"Gérer un projet informatique";s:4:"desc";s:0:"";s:4:"lieu";s:5:"Paris";s:7:"horaire";s:3:"non";s:8:"idsource";s:37:"non 0";}i:1;a:8:{s:7:"idevent";s:2:"47";s:7:"datedeb";s:19:"2008-06-02 14:43:00";s:7:"datefin";s:19:"2008-06-02 15:43:00";s:5:"titre";s:32:"Maîtrise d'ouvrage, l'essentiel";s:4:"desc";s:0:"";s:4:"lieu";s:5:"Paris";s:7:"horaire";s:3:"non";s:8:"idsource";s:37:"non 0";}}


 
et la unserialisation renvoi false !
 
que faire, quel piste me donné vous pour debugé ? apart la boule de cristal :p


 
 
c'est surement a cause des slashs : essaya quelque chose comme ca :
 
unserialize(stripcslashes($donnees));

Reply

Marsh Posté le 23-05-2008 à 18:04:28   

Reply

Marsh Posté le 27-05-2008 à 17:22:58    

babasss a écrit :

Tu es sûr qu'entre la sérialisation et l'unserialisation, ta variable n'est pas modifiée ?


 
 
oui oui mais avec le preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $_evenements ); avant l'unserialisation ça marche, j'ai trouvé ça sur php.net dans unserialize

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed