PHP4 serialize() - PHP 5unserialize(), une différence ?

Répondre
burnedsoul
le 09/06/2007 à 17:03
burnedsoul
Bonjour à tous,
Encore un souci à la con concernant la sérialisation d'une variable array.

Voilà je cohabite en local sur un PHP4 qui appelle un script sur le net tournant sur PHP5.
Du coup j'envoies en formulaire (un <input type='hidden' ...>) mon tableau sérializé.
Problème, lorsque je unserialize ma variable, bizzarement mon tableau retourné par unserialize() est vide O_o.
La première question que je me demandais, afin de chercher un peu avant de demander plus d'aide ^^, est la suivante :
Est ce une serialisation faite sous PHP4 est compatible PHP5 ?
Deuxième question, est ce qu'un champ $_POST est limité en nombre de caractères sachant que ma variable à serializée peut atteindre des milliers de caractères ?
Merci d'avance :)
Webmaster de Clikmag http://www.clikmag.fr
LA GLOBULE
le 09/06/2007 à 18:12
LA GLOBULE
Est ce une serialisation faite sous PHP4 est compatible PHP5 ?


Je ne sais pas, mais je pense fortement que c'est compatible.
Tu peux le tester facilement, vu que tu as un serveur PHP 4 et un autre en PHP 5 : serialize la même chose sur les deux et vois le résultat, si çà peut te rassurer.

Oui, le post est limité par la configuration du php.ini.
burnedsoul
le 09/06/2007 à 18:40
burnedsoul
Apparemment si ça parait incompatible :s
Je viens de tester le meme code sous PHP4 et ça passe nickel O_o

En fait mon souci c'est que je dois récupérer un tableau sous PHP4 dans un fichier PHP5. Il y a peut être un autre moyen que serialize() ?
Webmaster de Clikmag http://www.clikmag.fr
LA GLOBULE
le 09/06/2007 à 19:19
LA GLOBULE
Je n'ai pas de PHP 4 sous la main pour tester.
Mais cela m'étonne beaucoup quand même.

Je ne vois nulle part quelqu'un qui a le même problème que toi sur le net (et ce n'est pas la première fois que tu as des soucis de serialize / unserialize si je me souviens bien).
burnedsoul
le 11/06/2007 à 09:57
burnedsoul
Peut être en effet que j'ai du mal avec cette fonction qui sait.
Ca fonctionne bien comme ceci :

// Serialise le tableau
$serial = serialize($array);
<a href='page.php?tableau='.$serial.'>Lien</a>

// Puis sur l'autre page
$unserial = unserialize($_GET['serial']);

puis pour accéder à une valeur du tableau :

echo unserial[0]; // Par exemple
Webmaster de Clikmag http://www.clikmag.fr
LupusMic
le 11/06/2007 à 11:18
LupusMic
Je vais commencer par faire le paranoïaque :)

Inclure une donnée sérialisée dans une page Web, puis la récupérer n'est pas forcément une bonne idée. En effet, tu dois tout de même contrôler l'ensemble des données présentent dans le tableau récupéré. Or, je ne crois pas que tu pense vérifier cette donnée.

En ce qui concerne la compatibilité entre différentes versions PHP, il ne faut pas oublier qu'il y a parfois des corrections de bogue qui entrainent des incompatibilités.
De plus, d'après le fichier ./ext/standard/var.c de PHP 5.2.1 (paquet fournit par DotDeb), il y a un comportement de serialize qui est apparu dans la version 5. Donc, je ne jurerais pas de la compatibilité à 100 %.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
burnedsoul
le 11/06/2007 à 11:34
burnedsoul
En fait LupusMic, vu que je n'arrivais pas à déjà envoyer rien qu'une variable sérializée correctement, et que LA_GLOBULE m'a même mit un doute ^^, j'ai tenté le plus simple possible.
Mais apparemment, c'est sur le serveur Oueb en ligne que la fonction semble bogger :s

Du coup là j'essaye de passer autrement, via une chaine à laquelle je met mes ID que je veux faire passer, et ensuite j'explose la chaine pour avoir mes ID. Pas très sécu, mais si ça fonctionne, je me pencherais sur la sécu, d'ailleurs si certains ont des idées pour sécuriser tout ça, je suis preneur :)
Webmaster de Clikmag http://www.clikmag.fr
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours