Array zwischen html-Dateien transportieren (serialize und urlencode)
am 04.08.2006 13:05:42 von Phil KaltnerHi,
ich versuche, ein Array mittels serialize und urlencode
zu übergeben, was nicht klappt. Dazu habe ich ein
minimales Testprogramm geschrieben.
1) In der Version unten habe ich an zwei Stellen sonderbare
Ausgaben, s. Kommentare. Wo kommen die her?
2) Wenn ich die Zeile (*) wieder einkommentiere, habe ich
nach urldecode nicht das gewünschte Ergebnis:
Statt a:2:{s:4:"Name";s:4:"Paul";s:3:"Ort";s:4:"hier";}
ist da a:2:{s:4:\"Name\";s:4:\"Paul\";s:3:\"Ort\";s:4:\"hier\";}.
Ist url(en|de)code nicht bijektiv? Wo ist der Fehler?
Danke,
Phil
-------------------------
Der Code:
echo "
// ===================3D Feld erstel=
len
$feld=3Darray('Name' =3D> 'Paul', 'Ort' =3D> 'hier');
echo "\n
Wir haben ein Feld definiert:\n
";
print_r($feld);
$feld =3D serialize($feld);
echo "\n
Das serialisieren wir: ".$feld;
$feld =3D urlencode($feld);
echo "\n
Das urlencoden wir ()=
:
".$feld;
// ===================3D Feld direkt=
auswerten
echo "\n\n\n\n\n
\n\n\n\n";
$feld =3D urldecode($feld);
echo "\n
Das urldeencoden wir: ".$feld;
$feld =3D unserialize($feld);
echo "\n
Das unserialisieren wir: ".$feld;
// Hier kommt die Ausgabe:
//
Das unserialisieren wir: ArrayArray
// (
// [Name] =3D> Paul
// [Ort] =3D> hier
// )
// Sa steht: ArrayArray
echo "\n
print_r liefert: ";
print_r($feld);
// ===================3D Feld aus $_R=
EQUEST auswerten
$feld =3D $_REQUEST['feld'];
echo "\n\n\n\n\n
\n\n\n\n";
echo "\n
Wir haben ein Feld übergeben bekommen: ".$feld;
$feld =3D urldecode($feld);
echo "\n
Das urldeencoden wir: ".$feld;
//$feld =3D unserialize($feld); // Zeile (*)
echo "\n
Das unserialisieren wir: ".$feld;
// Wenn (*) auskommentiert ist, erhalte ich in
// der vorigen Zeile ist die Ausgabe:
// Das unserialisieren wir:
a:2:{s:4:\"Name\";s:4:\"Paul\";s:3:\"Ort\";s:4:\"hier\";}a:2 :{s:4:\"Name\=
";s:4:\"Paul\";s:3:\"Ort\";s:4:\"hier\";}
// Das Array wird also zweimal ausgegeben.
echo "\n
print_r liefert: ";
print_r($feld);
echo "";
?>
Die Ausgabe:
-----------------------------
Wir haben ein Feld definiert:
Array
(
[Name] =3D> Paul
[Ort] =3D> hier
)
Das serialisieren wir: a:2:{s:4:"Name";s:4:"Paul";s:3:"Ort";s:4:"hier=
";}
Das urlencoden wir ( href=3D"?feld=3Da%3A2%3A%7Bs%3A4%3A%22Name%22%3Bs%3A4%3A%22P aul%22%3Bs%3A=
3%3A%22Ort%22%3Bs%3A4%3A%22hier%22%3B%7D">Link):
a%3A2%3A%7Bs%3A4%3A%22Name%22%3Bs%3A4%3A%22Paul%22%3Bs%3A3%3 A%22Ort%22%3=
Bs%3A4%3A%22hier%22%3B%7D
Das urldeencoden wir: a:2:{s:4:"Name";s:4:"Paul";s:3:"Ort";s:4:"hier"=
;}
Das unserialisieren wir: Array
print_r liefert: Array
(
[Name] =3D> Paul
[Ort] =3D> hier
)
Wir haben ein Feld übergeben bekommen:
a:2:{s:4:\"Name\";s:4:\"Paul\";s:3:\"Ort\";s:4:\"hier\";}
Das urldeencoden wir:
a:2:{s:4:\"Name\";s:4:\"Paul\";s:3:\"Ort\";s:4:\"hier\";}
Das unserialisieren wir:
a:2:{s:4:\"Name\";s:4:\"Paul\";s:3:\"Ort\";s:4:\"hier\";}
print_r liefert:
a:2:{s:4:\"Name\";s:4:\"Paul\";s:3:\"Ort\";s:4:\"hier\";}