unserialize failed - Problem

unserialize failed - Problem

am 25.09.2006 01:54:51 von Merle Mohr

Hallo ng,

bei manchen Abfragen (aus zwei Tab.) bekomme ich
einen unserialize-Fehler.

verschickt werden die Daten so:
$package3 = urlencode(base64_encode(serialize(@$arrvorher)));
echo "

hier mal die codierten Daten von einem "Probl."-Datensatz:
[teststring] =>
YToxOntzOjM6Im5ldSI7YToxOntpOjIzO2E6MTE6e3M6NToiZmxnZXIiO3M6 MjM6Ikdld%2FZobmxpY2hlcyBaaXR0ZXJncmFzIjtzOjc6ImdhdHR1bmciO3 M6NToiQnJpemEiO3M6MzoiYXJ0IjtzOjU6Im1lZGlhIjtzOjI6ImVyIjtzOj E6IkciO3M6Mjoibm8iO3M6MjoiMTMiO3M6Mjoib2siO3M6Mjoib24iO3M6Mj oidmkiO3M6MDoiIjtzOjM6Imt6bCI7czowOiIiO3M6Mjoic3IiO3M6MToiMS I7czoyOiJzdCI7czoxOiIwIjtzOjM6Ind1biI7czowOiIiO319fQ%3D%3D

und entpackt dann so:
$arrvorher = unserialize(base64_decode($teststring));
oder als Versuch auch so:
$arrvorher = unserialize(base64_decode(htmlentities($teststring)));

das ergibt dann bei manchen (o.g.) Ergbnissen diese
Notice: unserialize() failed at offset 74 of 266 bytes in ...

Ich sehe nicht, an welchen Zeichen das hier haken könnte.
Am Prozentzeichen sicher nicht.?
In den Ergebnissen gibts Umlaute, Backslashs, ... die aber
einzeln (aufgerufen - abgeschickt) keine Probleme machen.

Woran könnte das liegen?? (php 4.2.1)

Danke schon mal für Hilfen,
Grüße, Merle

Re: unserialize failed - Problem

am 25.09.2006 10:28:33 von Claus Reibenstein

Merle Mohr schrieb:

> bei manchen Abfragen (aus zwei Tab.) bekomme ich
> einen unserialize-Fehler.
>
> verschickt werden die Daten so:
> $package3 = urlencode(base64_encode(serialize(@$arrvorher)));
> echo "

Warum urlencode()? Das ist hier vollkommen überflüssig.

> und entpackt dann so:
> $arrvorher = unserialize(base64_decode($teststring));

Wenn Du urlencode() benutzt, musst Du hier natürlich auch urldecode()
benutzen.

Gruß. Claus

Re: unserialize failed - Problem

am 25.09.2006 10:46:52 von Ulf Kadner

Claus Reibenstein wrote:

> Warum urlencode()? Das ist hier vollkommen überflüssig.

Nein! urlencode ist notwendig da base64 nicht nur alphanumerische
Zeichen ausgeben kann. (z.B.: FA420==)

> Wenn Du urlencode() benutzt, musst Du hier natürlich auch urldecode()
> benutzen.

Nein, das macht PHP automatisch.

MfG, Ulf

Re: unserialize failed - Problem

am 25.09.2006 10:52:01 von Ulf Kadner

Ulf Kadner wrote:

> Nein! urlencode ist notwendig da base64 nicht nur alphanumerische
> Zeichen ausgeben kann. (z.B.: FA420==)

Hast natürlich recht. Wenns per post geschickt wird ists nicht nötigt.

Da fehlt och der Kaffee hier.

MfG, Ulf

Re: unserialize failed - Problem

am 25.09.2006 11:13:43 von Claus Reibenstein

Ulf Kadner schrieb:

> Claus Reibenstein wrote:
>
>> Wenn Du urlencode() benutzt, musst Du hier natürlich auch urldecode()
>> benutzen.
>
> Nein, das macht PHP automatisch.

Nein, macht PHP nicht.

test1.php
¯¯¯¯¯¯¯¯¯

Test1



'
readonly>





test2.php
¯¯¯¯¯¯¯¯¯

Test2

echo "a = '$_GET[a]'
",
"b = '$_GET[b]' (dekodiert: '", urldecode($_GET['b']), "')\n";
?>



Ergebnis
¯¯¯¯¯¯¯¯
a = 'FA420=='
b = 'FA420%3D%3D' (dekodiert: 'FA420==')

Gleiches Ergebnis mit method='post' und $_POST[].

Gruß. Claus

Re: unserialize failed - Problem

am 25.09.2006 11:29:49 von Claus Reibenstein

Ulf Kadner schrieb:

> Ulf Kadner wrote:
>
>> Nein! urlencode ist notwendig da base64 nicht nur alphanumerische
>> Zeichen ausgeben kann. (z.B.: FA420==)
>
> Hast natürlich recht. Wenns per post geschickt wird ists nicht nötigt.

Per get auch nicht.

> Da fehlt och der Kaffee hier.

Da bin ich schon etwas weiter :-)

Gruß. Claus

Re: unserialize failed - Problem

am 25.09.2006 12:00:44 von Ulf Kadner

Claus Reibenstein wrote:
> Ulf Kadner schrieb:
>>Da fehlt och der Kaffee hier.
>
> Da bin ich schon etwas weiter :-)

Ich normalerweise auch. Aber feuchte Geburtstagsfeiern dauern bei mir
immer noch den ganzen nächsten tag an ;-(

MfG, Ulf

Re: unserialize failed - Problem

am 25.09.2006 12:50:18 von Claus Reibenstein

Ulf Kadner schrieb:

> Claus Reibenstein wrote:
>
>> Ulf Kadner schrieb:
>>
>>> Da fehlt och der Kaffee hier.
>>
>> Da bin ich schon etwas weiter :-)
>
> Ich normalerweise auch. Aber feuchte Geburtstagsfeiern dauern bei mir
> immer noch den ganzen nächsten tag an ;-(

Du erwartest jetzt doch hoffentlich kein Mitleid *veg* ;-)

Gruß. Claus

Re: unserialize failed - Problem

am 25.09.2006 12:53:49 von Merle Mohr

Hallo Claus
> ...
>
> Warum urlencode()? Das ist hier vollkommen überflüssig.
au!! - danke, habe ich gepennt. das war noch von einer
_GET-url-sendeaktion kopiert ...
Grüße, Merle