[PHP5] serialization/deserialization

Résolu
24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008 - 19 sept. 2006 à 23:21
g0ldstein Messages postés 23 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 26 octobre 2008 - 27 févr. 2008 à 21:17
Salut,

Ayant débuté le php5 récemment, j'ai un petit problème avec mes objets pour la sérialization/désérialization,
j'ai sur ma première page un formulaire :

<?
$a = new cObj();
... // init, modif, ...
?>

<form name="frm_xxx" action="xxx.php" method="POST">
" />
</form>

dans une deuxième page, je tente de récupérer mon objet :
<?
$a = unserialize(html_entity_decode($_POST['a']));
$a->Display(); // Display est définie dans ma classe
?>

mais j'obtiens une erreur pendant la désérialisation :(
Notice: unserialize() [function.unserialize]: Error at offset 42 of 2230 bytes in
puis Fatal error: Call to a member function Display() on a non-object in ... (normal vu qu'il n'a pas reconnu l'objet)


comment pourrais-je résoudre ce probleme ? (sachant que j'ai bien inclus la classe dans les 2 pages

Merci d'avance pour les réponses

++

7 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 sept. 2006 à 07:59
Hello,

non, c'est surtout que htmlentities n'a jamais servi à faire passer une variable en POST...
urlencode(), plutôt (et urldecode, donc). L'ordre est le bon : on linéarise, puis on encode la chaîne obtenue. Puis on décode, et on délinéarise.
2d problème : la taille de la chaîne obtenue est peut-être trop grande, tout simplement, pour passer en POST (ou en GET).
3
24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008
19 sept. 2006 à 23:44
bon j'ai resolu mon probleme en passant par une variable de session, m'enfin ça m'explique pas pourquoi ça passe pas ;(
surement un caractere qui gene au milieu
0
franco_se Messages postés 151 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 30 juillet 2018 2
20 sept. 2006 à 01:29
ton erreur vien de là:
<?htmlentities(serialize($a));?>

il faut d'abord faire htmlentities, puis serialize

serialize(htmlentities($a))
0
24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008
20 sept. 2006 à 11:47
je pense que ça vient de la taille de la chaine. j'avais tenté avec urlencode.

merci pour tout
++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
20 sept. 2006 à 12:46
J'approuve Mala sur ce point :)
0
cs_kalf Messages postés 7 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 19 avril 2007
19 avril 2007 à 15:53
yes c'est cool merci pour l'info !!

c cool !
0
g0ldstein Messages postés 23 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 26 octobre 2008
27 févr. 2008 à 21:17
salut, j'avais un probleme  semblable  quand je veux deserialiser une chaine serialisee de ma base de donnee,  ca foire meme si la chaine est exactement pareille que si je serialise directement le tableau!

Mais ca fonctionne en urlencode/urldecode la chaine serialisee ! merci !
0
Rejoignez-nous