Variable in Session erst bei reload belegt?

Hi Leute,

da ich verschiedene Variablen auf zwei Seiten brauche, habe ich diese nach beginnen einer Session mit session_start auch mit $_SESSION['titel']="Hallo Welt" angelegt.

Somit müßte die Variable ja auch sofort lesbar sein.

Schon auf der gleichen Seite ist die Variable offenbar nicht belegt, denn möchte ich den Wert mit echo $titel; ausgeben, ist die Variable leer.

Erst nach einem reload/aktualisieren wird die Variable belegt und ich kann sie ausgeben, was aber nicht im Sinne meines Vorhaben ist ;-)

Bisher war ich der Annahme, dass nach $_SESSION['irgendwas']="nochwas"; die Variable auch sofort sessionweit angelegt ist.

Muss ich irgendwie noch was registrieren?

Der Webserver läuft unter Apache und PHP ist Version 4.3.2

Was muss ich anderst machen damit es klappt?

Gruss,
Daniel
 
Das kommt daher, weil du mit register_globals=on drauf zugreifst, d.h. dass die Variable $titel erst erzeugt wird, wenn das PHP-Skript aufgerufen wird, bei deinem Beispiel wird aber die $_SESSION["title"] noch im Script definiert, PHP hat somit erst im nächsten Scriptaufruf (egal welche Script) die Möglichkeit, $title zu belegen.

Die Lösung: Du greifst mit $_SESSION["title"] darauf zu.
Allgemein ist es besser, wenn du ausschließlich mit $_SESSION["title"] drauf zugreifst, auch in den andren Scripten.
Damit sind die Dateien dann auch auf anderen Servern, auf denen womöglich register_globals=off ist, lauffähig.
 
SESSION und Arry

Hi,

vielen Dank für den Tipp, jetzt klappt es schon mal ;-))

Was ich noch wissen möchte ist der Zugriff auf ein Array bzw ob das vorgehen von mir ok ist.

Ich lege also die Variable miz $_SESSION['bilder']=array(); an. In einer Schleife füge ich Bilder mit $_SESSION['bilder']=$file hinzu.

Wenn ich nun auf das 5te Bild zugreiffen möchte, habe ich es so gemacht: $_SESSION['bilder'][5];

Ist das so korrekt? Zumindest gibt es keine Fehlermeldung und es geht, nur ist das der richtige Weg?

Gruss,
Daniel
 
Wenn $file ein Array ist, ist es vollkommen korrekt.

Allerdings solltest du $file als Variablen Namen vermeiden, das es schon eine Funktion namens file gibt und es daher zu Konflikten kommen kann.

Bei dieser Definition: $_SESSION["test"] = array(); musst du $_SESSION["test"] einfach wie ein Array behandeln, man nennt das dann mehrdimensionales Array.
 
Zurück