Sind (un)serialize destruktive Funktionen?!

L

lol

Aktives Mitglied
Thread Starter
Dabei seit
18.01.2006
Beiträge
1.602
Reaktionspunkte
78
Gerade selbst erledigt:
Falsche Theorie:
Ich wundere mich schon sehr, dass meine Webapp, an der ich arbeite seltsame Fehler auswirft, die nach z.b. reloads verschwinden.

Nun hatte ich eine völlig schräge Situation, in der ich:
- Objekt erzeuge
- Memberfct. aufrufe
- serializiere(in andere var)
- 2. Memberfct.

Und genau bei der zweiten meckert der Interpreter, ich würde eine Memeberfct, auf einen Non-Obj aufrufen.
Setze ich hingegen die Reihenfolge um:
- Objekt erzeuge
- Memberfct. aufrufe
- 2. Memberfct.
- serializiere(in andere var)

Läuft der Laden.
Nun habe ich nochmal in der php-Doc nachgelesen, aber nicht gefunden, dass die serialize funktion destruktiv sei. Sollte auch gar nicht, wäre ja schlechter Stil.

Nochmal ein kleines Codesnippet:
Code:
$obj = new Object();
$obj->fctA();
$_SESSION['obj'] = serialize($obj);
$obj->fctB(); #Zackbumm, hier kommt der Interpreter mit der Fehlermeldung
Es hat daran gelegen, dass PHP den Zugriff auf $_SESSION vars auch über $_VARNAME_, statt $_SESSION['_VARNAME_'] erlaubt.
 
Genau das ist ja der Punkt (gewesen):
Ich wußte nicht, dass register_globals auch für die $_SESSION gilt.
In den anderen Globalen Arrays wie POST, GET habe ich darauf geachtet.

Danke dir für die Bestätigung.
 
Aber nur wenn "register_globals = on" ist. Das ist es auf den allermeisten shared hosts nicht.

Echt nicht?
Ich hatte bisher eher den Eindruck, dass das bei viel zu vielen Hostern immer noch der Fall ist – aus Rücksicht auf irgendwelche Kunden, die seit gefühlten siebenundachtzig Jahren zu faul sind, endlich mal ihre Scripte zu aktualisieren…
 
Hm per Google Suche zeigen sich beide Typen von Hostern, hast Recht. Allerdings sollten wir als Skripter das ignorieren/ausschalten, nicht umsonst ist oben verlinktes Dokument überschrieben mit:

Warning

This feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.
 
Allerdings sollten wir als Skripter das ignorieren/ausschalten

Ich wollte auch nichs Gegenteiliges behaupten!
Ich schreibe meine Skripte schon seit Jahren unter Verwendung der Superglobalen und wünschte mir, alle Hoster würden endlich register_globals auf »off« stellen.
 
Zurück
Oben Unten