Désérialiser un tableau

Eléphanteau du PHP | 24 Messages

30 janv. 2009, 19:39

Bonjour,

Apparemment, ma désérialisation ne fonctionne pas dans le code suivant :

- dans mon fichier de log de l'utilisateur, j'ai :

Code : Tout sélectionner

$donnees = serialize($objUtilisateur->getAll()); SetCookie("utilisateur", $donnees, 0, "/psy/", "", 0);
- dans mon fichier de changement de mot de passe, j'ai :

Code : Tout sélectionner

$tableau = unserialize($_COOKIE['utilisateur']);
Or, si je fais

Code : Tout sélectionner

echo $_COOKIE['utilisateur'];
j'ai bien du contenu. Par contre, si je fais

Code : Tout sélectionner

foreach($tableau as $key=>$value) echo "cle vaut $key et valeur vaut $value<br>";
j'ai une erreur de type d'argument au niveau du foreach.

Quelqu'un aurait une idée?

Merci d'avance...

ViPHP
ViPHP | 5924 Messages

30 janv. 2009, 20:27

Bah la base, fait un var_dump() de ce que tu lui passes…

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

30 janv. 2009, 21:01

Vérifie le type de $_COOKIE['utilisateur'] (un petit var_dump() ou gettype()), car il est possible que PHP désérialise automagiquement la donnée.

Eléphanteau du PHP | 24 Messages

30 janv. 2009, 21:49

Problème résolu : la solution m'a été donnée sur un autre forum. C'est un problème de magics quotes activées. Un stripslashes de mon cookie avant sa désérialisation et tout fonctionne!