Sven Rautenberg: serialize() und multidimensionale Arrays

Beitrag lesen

Moin!

Nun gesetzt den fall, man will dem besucher jedesmal die selbe Sessionnummer geben, dann könnte er einen angefangenen Vorgang beim nächsten Mal fortsetzen. Könnte ja sein, dass er das nun vom PC seiner Schwester aus tun muss, die aber aus Prinzip Angst vor Cookies hat (OK, dann sollte er sich viellicht ne andere Schwester suchen *gg*), dann könnte er bei gleichem Format von interner Serialisierung und serialize() die Session auch mit auth übernehmen. Das Dagtenmodell wäre an dieser Stelle nicht gebrochen und man würde von einer "sauberen Lösung" sprechen können.

Das ist doch eigentlich gar kein Problem. Es _ist_ sogar gar kein Problem, weil ich genau das schon gemacht habe.

Der Trick ist, dass man, noch bevor eine Session gestartet wird, erstmal die Anmeldedaten auswertet. Dann guckt man nach, ob diese Anmeldedaten schon eine zugeordnete Session besitzen, und setzt in diesem Fall die Session-ID auf die gespeicherte ID. Und erst _dann_ startet man die Session, welche Prompt alle Session-Variablen lädt und zur Verfügung stellt.

Das ganze läuft simpel so ab (zugegeben: PHP 4.0.x):

if (Alte Session soll übernommen werden)
{
  session_id($alte_sessionid);
}
else
{
  session_id($PHPSESSID)
}

session_start();

Aufgemerkt: Der Befehl session_start() überschreibt (zumindest bei register_globals=on) alle Variablen, die in der Session registriert wurden. Man sägt, wenn man sich dumm anstellt, unter Umständen am eigenen Ast. Wenn sich die Variablen hingegen alle in $_SESSION wiederfinden, ist diese Gefahr nicht gegeben.

Gesucht wird also, wenn ich Fabian hier mal unterstützen darf, eine Methode, mit der man die Sicherung und Wiederherstellung der Daten bei Session mit dem original session_start() in das Format von serialize()/unserialize() bringen kann. Es wird wohl nichts anderes übrig bleiben, als session_set_save_handler() zu verwenden und für read und write die Funktionen einzusetzen, die man auch für "Auth-Sessions" benutzt. Da kann ich aber leider auch nicht weiterhelfen.

Aha, du gehörst also zu den "wir"? :)

- Sven Rautenberg

--
"Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)