Pb Serialize/unserialize tableau deux dimension

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Pb Serialize/unserialize tableau deux dimension

par Berzemus » 14 janv. 2009, 12:27

Ou urldecode() .

par @rthur » 14 janv. 2009, 11:52

Bonjour,

Le problème semble se situer là :
s:30:"Priorité Mondial INTL"; ( on devrait avoir s:21 )
s:19:"1 à 3 mois"; ( on devrait avoir s:10 )

Ca ressemble à un problème d'encodage quelque part.
Par contre pourquoi +9 pour un caractère accentué ?
Effectivement bien vu, blof!
Peut être qu'en faisant un utf8_encode avant de sérialiser (et utf8_decode après avoir désérialisé) résoudrait le problème.
Sinon il y a aussi htmlentities() qui pourrait aider à contourner le pb...

par blof » 14 janv. 2009, 10:55

Bonjour,

Le problème semble se situer là :
s:30:"Priorité Mondial INTL"; ( on devrait avoir s:21 )
s:19:"1 à 3 mois"; ( on devrait avoir s:10 )

Ca ressemble à un problème d'encodage quelque part.
Par contre pourquoi +9 pour un caractère accentué ?

par yan2new » 14 janv. 2009, 00:00

Bonjour,

Vu les slashes que tu as en trop dans ta variable POST, je dirais que les magic_quotes sont activées sur ton serveur et qu'un stripslashes() avant d'unserialiser ta chaine devrait résoudre ton problème
Merci pour vos réponses. J'ai essayé le stripslashes() sans succès. C'est justement ce qui me pose question. C'est avec un stripslashes que j'obtiens le résultat suivant

a:3:{i:0;a:7:{s:4:"name";s:30:"Priorité Mondial INTL";s:4:"rate";s:6:"376.43";s:12:"shippingDate";s:10:"2009-01-14";s:12:"deliveryDate";s:28:"www.postescanada.ca/?Lang=fr";s:17:"del ... XPressPost International";s:4:"rate";s:6:"228.44";s:12:"shippingDate";s:10:"2009-01-14";s:12:"deliveryDate";s:10:"2009-01-21";s:17:"deliveryDayOfWeek";s:1:"4";s:9:"nextDayAM";s:5:"false";s:9:"packingID";s:3:"P_0";}i:2;a:7:{s:4:"name";s:23:"Colis Postaux - Surface";s:4:"rate";s:6:"118.06";s:12:"shippingDate";s:10:"2009-01-14";s:12:"deliveryDate";s:19:"1 à 3 mois";s:17:"deliveryDayOfWeek";s:1:"4";s:9:"nextDayAM";s:5:"false";s:9:"packingID";s:3:"P_0";}}

et quand j'applique unserialize() là dessus ça me rerourne false.

Par rapport aux questions de sessions je voulais d'abord étudier l'option serialize/unserialize

par @rthur » 13 janv. 2009, 23:48

Bonjour,

Vu les slashes que tu as en trop dans ta variable POST, je dirais que les magic_quotes sont activées sur ton serveur et qu'un stripslashes() avant d'unserialiser ta chaine devrait résoudre ton problème

par Berzemus » 13 janv. 2009, 23:47

Sans parler du souci de désérialisation, mais si tu dois garder des infos à travers les pages, pourquoi ne pas utiliser les variables de session ?

Pb Serialize/unserialize tableau deux dimension

par yan2new » 13 janv. 2009, 23:35

Excusez-moi,
J'ai parcouru un bon nombre de forum avant de faire ce post mais aucune des solutions n'a réglée mon problème.

Je voudrais passer un tableau deux dimensions d'un formulaire à un autre. Dans le premier, je fais:

<INPUT type='hidden' name='shippings' value='<?=serialize($cp->shipping_methods);?>'>
L'opération se passe bien et lorsque je fais un echo de la variable $_POST récupérée, j'ai bien ma chaire de caractères

$_POST["shippings"]=a:3:{i:0;a:7:{s:4:\"name\";s:30:\"Priorité Mondial INTL\";s:4:\"rate\";s:6:\"376.43\";s:12:\"shippingDate\";s:10:\"2009-01-14\";s:12:\"deliveryDate\";s:28:\"www.postescanada.ca/?Lang=fr\";s:17:\"d ... XPressPost International\";s:4:\"rate\";s:6:\"228.44\";s:12:\"shippingDate\";s:10:\"2009-01-14\";s:12:\"deliveryDate\";s:10:\"2009-01-21\";s:17:\"deliveryDayOfWeek\";s:1:\"4\";s:9:\"nextDayAM\";s:5:\"false\";s:9:\"packingID\";s:3:\"P_0\";}i:2;a:7:{s:4:\"name\";s:23:\"Colis Postaux - Surface\";s:4:\"rate\";s:6:\"118.06\";s:12:\"shippingDate\";s:10:\"2009-01-14\";s:12:\"deliveryDate\";s:19:\"1 à 3 mois\";s:17:\"deliveryDayOfWeek\";s:1:\"4\";s:9:\"nextDayAM\";s:5:\"false\";s:9:\"packingID\";s:3:\"P_0\";}}

Mais voilà lorsque je fais

$shippings=unserialize($_POST['shippings']);
Unserailize me retourne false.
J'ai essayé urlencode/serialize et stripslasches/unserialize l'erreur reste la même sauf que lorsque j'affiche la varaible poste j'ai plutot ceci:

a:3:{i:0;a:7:{s:4:"name";s:30:"Priorité Mondial INTL";s:4:"rate";s:6:"376.43";s:12:"shippingDate";s:10:"2009-01-14";s:12:"deliveryDate";s:28:"www.postescanada.ca/?Lang=fr";s:17:"del ... XPressPost International";s:4:"rate";s:6:"228.44";s:12:"shippingDate";s:10:"2009-01-14";s:12:"deliveryDate";s:10:"2009-01-21";s:17:"deliveryDayOfWeek";s:1:"4";s:9:"nextDayAM";s:5:"false";s:9:"packingID";s:3:"P_0";}i:2;a:7:{s:4:"name";s:23:"Colis Postaux - Surface";s:4:"rate";s:6:"118.06";s:12:"shippingDate";s:10:"2009-01-14";s:12:"deliveryDate";s:19:"1 à 3 mois";s:17:"deliveryDayOfWeek";s:1:"4";s:9:"nextDayAM";s:5:"false";s:9:"packingID";s:3:"P_0";}}

Quelqu'un a-t-il une idée?

Merci beaucoup