worki2k1
Erfahrenes Mitglied
Hallo Leute,
ich habe hier gerade wieder ein ganz eigenartiges Problem. Irgendwie kann ich eine bestehende Session nicht um weitere Variablen erweitern.
Situation:
In einem Formular gebe ich Benutzername und Kennwort ein. Diese werden an die Datei login.php geschickt, welche in der Datenbank prüft ob alles richtig ist. Es wird ein Objekt myuser erstellt und dort bereits ein paar Daten zugewiesen. Das komplette Objekt wird in der Session gespeichert. (Quellcode weiter unten). Danach wird auf chooseuser.php weitergeleitet, die anhand der Daten in der Session weitere Einstellungen macht, sich Daten holt und diese ebenfalls in der Session speichert. In der chooseuser.php wird dann wieder per header ("Location: url"); auf die nächste Seite gelinkt. In der Zielseite existieren aber die in der chooseuser.php gespeicherten Daten nicht mehr. Die aus login.php sind aber noch da.
login.php
chooseuser.php
test.php
Hab ich irgendwas übersehen? Ich sitz total auf dem Schlauch.
Nachtrag 1: Natürlich ist die Klassendefinition für das Objekt myuser vor dem session_start(); geladen worden.
Nachtrag 2: Hab inzwischen herausgefunden, dass es am register_globals liegt. Wenn register_globals = on ist, läuft es einwandfrei. Verstehe ich an der Sache nur nicht, da ich auf Variablen immer über $_REQUEST, $_GET, $_POST oder $_SESSION zugreife.
ich habe hier gerade wieder ein ganz eigenartiges Problem. Irgendwie kann ich eine bestehende Session nicht um weitere Variablen erweitern.
Situation:
In einem Formular gebe ich Benutzername und Kennwort ein. Diese werden an die Datei login.php geschickt, welche in der Datenbank prüft ob alles richtig ist. Es wird ein Objekt myuser erstellt und dort bereits ein paar Daten zugewiesen. Das komplette Objekt wird in der Session gespeichert. (Quellcode weiter unten). Danach wird auf chooseuser.php weitergeleitet, die anhand der Daten in der Session weitere Einstellungen macht, sich Daten holt und diese ebenfalls in der Session speichert. In der chooseuser.php wird dann wieder per header ("Location: url"); auf die nächste Seite gelinkt. In der Zielseite existieren aber die in der chooseuser.php gespeicherten Daten nicht mehr. Die aus login.php sind aber noch da.
login.php
PHP:
session_start ();
if ($username == richtig && $passwort == richtig)
{
$user = new myuser ($username, $passwort);
$_SESSION["sess_user"] = $user;
header ("Location: chooseuser.php?".session_name()."=".session_id());
}
else
{
echo "blabla Fehler";
}
PHP:
session_start ();
// hole weitere Daten
// und erweitere die Session
$_SESSION["sess_user"]->irgendwas = "blablabla";
header ("Location: test.php?".session_name()."=".session_id());
PHP:
session_start ();
var_dump ($_SESSION);
// An dieser Stelle ist der Wert $_SESSION["sess_user"]->irgendwas
// wieder auf null zurück gesetzt.
// Die Werte, die in der login.php geschrieben wurden sind aber noch da.
Hab ich irgendwas übersehen? Ich sitz total auf dem Schlauch.
Nachtrag 1: Natürlich ist die Klassendefinition für das Objekt myuser vor dem session_start(); geladen worden.
Nachtrag 2: Hab inzwischen herausgefunden, dass es am register_globals liegt. Wenn register_globals = on ist, läuft es einwandfrei. Verstehe ich an der Sache nur nicht, da ich auf Variablen immer über $_REQUEST, $_GET, $_POST oder $_SESSION zugreife.
Zuletzt bearbeitet: