[PHP5] serialization/deserialization [Résolu]

Signaler
Messages postés
233
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 juillet 2008
-
Messages postés
23
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
26 octobre 2008
-
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

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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).
Messages postés
233
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 juillet 2008

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
Messages postés
151
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
30 juillet 2018

ton erreur vien de là:
<?htmlentities(serialize($a));?>

il faut d'abord faire htmlentities, puis serialize

serialize(htmlentities($a))
Messages postés
233
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 juillet 2008

je pense que ça vient de la taille de la chaine. j'avais tenté avec urlencode.

merci pour tout
++
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
J'approuve Mala sur ce point :)
Messages postés
7
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
19 avril 2007

yes c'est cool merci pour l'info !!

c cool !
Messages postés
23
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
26 octobre 2008

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 !