problem mit unserialize
am 04.09.2006 13:28:09 von Karmen Satie
Hallo,
weiß jemand, was ich hier falsch mache,
wo hier der Fehler steckt?
(Notice: unserialize() failed at offset 9 of 133 bytes in ...)
if (isset($_GET['serstring'])) {
echo is_array($serstring) ? 'Array' : 'kein Array';
echo "
\$serstring: ".$serstring;
$unserial = unserialize($serstring);
foreach ($unserial as $kennung => $wert) {
print "
|| $kennung / $wert || \n";
} } else { echo "(noch) nix gesendet";}
// ###################################
$daten = array("Klaus", "Max", "Heinz");
$daten[] = "Gustav";
$daten['comments'] = array(5,4,6,23);
$package = serialize($daten);
echo "
";
Danke!
Grüße, Karmen
Re: problem mit unserialize
am 04.09.2006 13:45:24 von Carsten Wiedmann
Karmen Satie schrieb:
> weiß jemand, was ich hier falsch mache,
> wo hier der Fehler steckt?
> (Notice: unserialize() failed at offset 9 of 133 bytes in ...)
>
> if (isset($_GET['serstring'])) {
> echo is_array($serstring) ? 'Array' : 'kein Array';
Nur nebenbei, $_GET['serstring'] kann immer nur ein String sein.
> echo "
\$serstring: ".$serstring;
>
> $unserial = unserialize($serstring);
| $unserial = unserialize(base64_decode($serstring));
> foreach ($unserial as $kennung => $wert) {
> print "
|| $kennung / $wert || \n";
> } } else { echo "(noch) nix gesendet";}
>
> // ###################################
> $daten = array("Klaus", "Max", "Heinz");
> $daten[] = "Gustav";
> $daten['comments'] = array(5,4,6,23);
> $package = serialize($daten);
| $package = urlencode(base64_encode(serialize($daten)));
> echo "
>
";
> Danke!
> Grüße, Karmen
Gruß
Carsten
Re: problem mit unserialize
am 04.09.2006 13:54:06 von Carsten Wiedmann
Carsten Wiedmann schrieb:
Nachtrag:
> > $package = serialize($daten);
>
> | $package = urlencode(base64_encode(serialize($daten)));
Das urlencode() macht bei einem Formular ja der Browser und muss man nur bei
einer URI in einem Link (z.B. ) machen. Sorry.
| $package = base64_encode(serialize($daten));
BTW:
IMHO könnte man auch alternativ htmlspecialchars() anstatt base64_encode()
nehmen.
Gruß
Carsten
Re: problem mit unserialize
am 04.09.2006 14:06:07 von Matthias Esken
On Mon, 04 Sep 2006 13:28:09 +0200, Karmen Satie wrote:
> weiß jemand, was ich hier falsch mache,
> wo hier der Fehler steckt?
> (Notice: unserialize() failed at offset 9 of 133 bytes in ...)
>
> if (isset($_GET['serstring'])) {
> echo is_array($serstring) ? 'Array' : 'kein Array';
> echo "
\$serstring: ".$serstring;
>
> $unserial = unserialize($serstring);
Wo kommt auf einmal die Variable $serstring her?
Gruß,
Matthias
Re: problem mit unserialize
am 04.09.2006 19:46:28 von Karmen Satie
Hallo Carsten,
super! toll! es klappt!!
Hab vielen Dank!
(mit htmlspecialchars() habe ich es nicht hinbekommen.)
Hi Matthias,
> ...
> Wo kommt auf einmal die Variable $serstring her?
geschickt, das ist doch ein/der String.
Grüße, Karmen
Re: problem mit unserialize
am 04.09.2006 20:31:24 von Carsten Wiedmann
Karmen Satie schrieb:
> Matthias Esken schrieb:
> >
> > > if (isset($_GET['serstring'])) {
> > > ...
> > > $unserial = unserialize($serstring);
> >
> > Wo kommt auf einmal die Variable $serstring her?
>
> geschickt, das ist doch ein/der String.
Das hab ich in meiner Antwort leider auch übersehen :-/ und tut bei dir auch
nur zufällig.
"Geschickt" hast du $_GET['serstring']. Das benutzt du ja auch beim isset().
Nur das ist eigentlich PHP bekannt und solltest du im unserialize() / dem
weiteren Script benutzen.
Das PHP bei dir plötzlich auch ein $serstring kennt ist nicht "normal" und
du solltest nicht davon ausgehen.
Gruß
Carsten