Page 1 sur 1

Passage par URL avec serialize , lecture plus possible ?

Posté : 11 nov. 2006, 22:34
par lemoineo
J'ai un tableau

Code : Tout sélectionner

array ( 613 => 'SAN613', '088' => 'SSARCE', '027' => 'DG', )
que je dois passer via un GET d'une page à l'autre
l'ayant traduit par

Code : Tout sélectionner

urlencode(serialize($Criteres);
je récupère dans la deuxième page un truc qui ressemble à ce que j'attendais

Code : Tout sélectionner

'a:3:{i:613;s:6:"SAN613";s:3:"088";s:6:"SSARCE";s:3:"027";s:2:"DG";}'
mais l'unserialize qui doit normalement me remettre tout cela d'aplomb me rend un FALSE laconique (hic) !
Et supprimer le urlencode ou le remplacer par htmlentities n'arrange rien !
C'est le bazar depuis que j'ai voulu placer mon site avec register_globals à OFF ! C'est dur d'être vertueux ![/quote]

Posté : 11 nov. 2006, 23:35
par fab
on peut voir le code de récupération tu utilises bien $_GET ??

j'ai repris le code en détail, même punition !

Posté : 12 nov. 2006, 11:01
par lemoineo
procedure simplifiée serialize.php
$Tableau = array();
$Tableau["088"] = "SSARCE";
$Tableau["613"] = "SAN613";
$Tableau["027"] = "DG";
var_export($Tableau);
echo "<br>";
$Sortie = serialize($Tableau);
echo "<a target=_blanck href='unserialize.php?Sortie=".urlencode($Sortie)."'>Sortie</a>";
qui appelle unserialize.php
$Sortie = $_GET["Sortie"];
echo $Sortie."!<br>";
$Tableau = unserialize($Sortie);
var_export($Tableau);
echo "!<br>";
L'affichage de $Tableau est toujours false ...

Posté : 12 nov. 2006, 11:12
par Cyrano
Forcément, gros malin, tu fais deux opérations dans un sens et ensuite dans l'autre sens tu n'en fais plus qu'une, ça ne peut que louper :
-1- serialize + urlencode
Très bien jusque là, mais ensuite, il faut faire l'opération inverse :
-2- urldecode + unserialize et pas unserialize directement !

Ce qui veut dire que la ligne :
$Sortie = $_GET["Sortie"];
doit être corrigée comme ceci :
$Sortie = urldecode($_GET["Sortie"]);

Qui est gros ?

Posté : 12 nov. 2006, 12:32
par lemoineo
Désolé, mais cela ne résoud rien ...
le urldecode se fait de façon implicite dans le $_GET
j'ai testé quand même ta proposition et cela ne change rien
Le code modifié de unserialize.php
$Sortie = $_GET["Sortie"];
echo $Sortie."!<br>";
$Sortie = urldecode($Sortie);
echo $Sortie."!<br>";
$Tableau = unserialize($Sortie);
var_export($Tableau);
echo "!<br>";
dans l'url appelée , on voit d'ailleurs très bien l'encodage url

Code : Tout sélectionner

http://localhost/exploratoire/unserialize.php?Sortie=a%3A3%3A%7Bs%3A3%3A%22088%22%3Bs%3A6%3A%22SSARCE%22%3Bi%3A613%3Bs%3A6%3A%22SAN613%22%3Bs%3A3%3A%22027%22%3Bs%3A2%3A%22DG%22%3B%7D
et dans l'echo interne, on voit que le urldecode s'est fait sans qu'on l'appelle ...

Code : Tout sélectionner

a:3:{s:3:\"088\";s:6:\"SSARCE\";i:613;s:6:\"SAN613\";s:3:\"027\";s:2:\"DG\";}! a:3:{s:3:\"088\";s:6:\"SSARCE\";i:613;s:6:\"SAN613\";s:3:\"027\";s:2:\"DG\";}! false!
Merci quand même pour tes (gros) efforts 8)

Posté : 12 nov. 2006, 12:37
par Cyrano
Et ça affiche quoi comme résultat : j'ai des problèmes système en ce moment, je peux pas tester quoique ce soit.

Réponse entre deux edit

Posté : 12 nov. 2006, 12:40
par lemoineo
J'ai repris mon message pendant que tu répondais

Posté : 12 nov. 2006, 12:59
par titerm
Ton pb viens de la <<\">>

Tu dois avoir les magic quote activés...
Dans ton php.ini, met les a off et tout ira mieux... De toute façon, il est recommandé de ne pas avoir ce truc ON. Puisque tu es dans une séquence vertueuse, autant y allez a fond.

Posté : 12 nov. 2006, 13:59
par fab
En attendant que tu répondes la solution précédente je tiens juste a te signaler, qu'il existe une limite théorique de la taille des URL qui est de mémoire ( pas sur donc ) 1024 caractères donc faudrais que tu fasses attention a la taille du tableau que tu veux passer. Si tu as un tableau de plus ou moins grande taille pour le faire passer a la page suivante utilise une autre méthode telle que les sessions.
Tu gagneras aussi en sécurité :) surtout si les valeurs sont plus ou moin critiques

Super, merci !

Posté : 12 nov. 2006, 19:25
par lemoineo
En effet, titerm, c'est bien cela qui foutait le bazar.
J'ai repris une config de XAMPP sans reprendre les paramètres de mon ancien site, d'ou cette obstination à ne pas voir le souci de config
Merci encore

... Pour le souci de taille, je ne pense pas atteindre au dela de 80 à 100 car
et aucun problème de sécurité. Merci à fab pour ton soutien persistant.