problème avec serialize

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 : problème avec serialize

Re: problème avec serialize

par Invité » 01 juin 2010, 22:18

Merci pour la réponse, j'ai utilisé la SESSION c'est plus simple et moins de problème.

Re: problème avec serialize

par Ryle » 01 juin 2010, 21:52

Si les magic quotes sont activés sur le serveur, alors effectivement comme l'indique macgawel, les guillemets et apostrophes de ta chaine vont être protégés d'un antislash qui t'empêchent de reconstruire le tableau. Il suffit donc de les retirer.

Pour cela, tu peux utiliser stripslashes() pour les supprimer avant de dé-serialiser :)
$a =unserialize(stripslashes($_POST['cacher']));
echo $a[0] ;
Tu peux aussi tester si les magic quotes sont activées sur le serveur :
if (get_magic_quotes_gpc())
   $a =unserialize(stripslashes($_POST['cacher']));
else
   $a =unserialize($_POST['cacher']);

Re: problème avec serialize

par macgawel » 01 juin 2010, 08:50

			    echo ($_POST['cacher']);
			    $a =unserialize($_POST['cacher']);
			    echo $a[0] ;

Code : Tout sélectionner

a:15:{i:0;s:12:\"ARM_0003.jpg\";i:1;s:1:\"1\";i:2;s:1:\"2\";i:3;s:1:\"3\";i:4;s:5:\"60€\";i:5;s:12:\"ARM_0030.jpg\";i:6;s:1:\"4\";i:7;s:1:\"5\";i:8;s:1:\"6\";i:9;s:6:\"141€\";i:10;s:12:\"ARM_0133.jpg\";i:11;s:1:\"7\";i:12;s:1:\"8\";i:13;s:1:\"9\";i:14;s:6:\"222€\";}
Bonjour.

1. Pour du code php, merci d'utiliser plutôt les balises
, c'est plus clair.

2. Si je comprends bien, tu envoies en POST la chaine de cractères sérialisée ?
=> Au cas où tu ne l'as pas remarqué, les apostrophes sont echappées (suite au passage en POST). Du coup, [b]unserialize()[/b] ne reconnaît plus la chaine.

[b]serialize()[/b] sert, à la base, pour stocker un tableau(objet) dans un fichier, pas pour passer un tableau en paramètre.
Trois solutions (enfin, il y a trois solutions qui me viennent à l'esprit) :
- Utiliser autant de champs cachés que de variables, plutôt qu'un seul qui contient le tableau sérialisé.
- Construire toi-même une chaîne au lieu d'utiliser [b]serialize()[/b].
- Utiliser des sessions et stocker le contenu du tableau dedans. Ca me semble la meilleure solution...

Re: problème avec serialize

par AoSiX » 31 mai 2010, 22:37

Salut,

je ne suis particulièrement pas fan de décryptage de données sérialisées :p Peut tu déjà faire un print_r($a) ?

problème avec serialize

par popo60 » 31 mai 2010, 21:27

Bonjour à tous,
J'ai serialize un tableau que j'ai passé dans un champ hidden d'un formulaires, voici ce que je récupère, mais quand je fais un echo de $a[0] je ne récupère rien !
Comment faire pour afficher les éléments du tableau.

Code : Tout sélectionner

echo ($_POST['cacher']); $a =unserialize($_POST['cacher']); echo $a[0] ; a:15:{i:0;s:12:\"ARM_0003.jpg\";i:1;s:1:\"1\";i:2;s:1:\"2\";i:3;s:1:\"3\";i:4;s:5:\"60€\";i:5;s:12:\"ARM_0030.jpg\";i:6;s:1:\"4\";i:7;s:1:\"5\";i:8;s:1:\"6\";i:9;s:6:\"141€\";i:10;s:12:\"ARM_0133.jpg\";i:11;s:1:\"7\";i:12;s:1:\"8\";i:13;s:1:\"9\";i:14;s:6:\"222€\";}
Merci pas avance de votre aide.